<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>NVTX C++ API Reference: nvtx3.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">NVTX C++ API Reference<span id="projectnumber">&#160;1.0</span>
   </div>
   <div id="projectbrief">C++ convenience wrappers for NVTX v3 C API</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_48b95086e7eb28d79ef283b47c5fa0c6.html">nvtx3</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle"><div class="title">nvtx3.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="nvtx3_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment"> * SPDX-FileCopyrightText: Copyright (c) 2020-2025 NVIDIA CORPORATION &amp; AFFILIATES. All rights reserved.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment"> * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment"> *</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment"> * you may not use this file except in compliance with the License.</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment"> * You may obtain a copy of the License at</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="comment"> *</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment"> *     http://www.apache.org/licenses/LICENSE-2.0</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="comment"> *</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="comment"> * See the License for the specific language governing permissions and</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="comment"> * limitations under the License.</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="comment"> *</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="comment"> * Licensed under the Apache License v2.0 with LLVM Exceptions.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="comment"> * See https://nvidia.github.io/NVTX/LICENSE.txt for license information.</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="comment"> */</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span> </div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span><span class="comment">/* Temporary helper #defines, #undef&#39;ed at end of header */</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="preprocessor">#define NVTX3_CPP_VERSION_MAJOR 1</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="preprocessor">#define NVTX3_CPP_VERSION_MINOR 0</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="comment">/* This section handles the decision of whether to provide unversioned symbols.</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="comment"> * If NVTX3_CPP_REQUIRE_EXPLICIT_VERSION is #defined, unversioned symbols are</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="comment"> * not provided, and explicit-version symbols such as nvtx3::v1::scoped_range</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><span class="comment"> * and NVTX3_V1_FUNC_RANGE must be used.  By default, the first #include of this</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span><span class="comment"> * header will define the unversioned symbols such as nvtx3::scoped_range and</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span><span class="comment"> * NVTX3_FUNC_RANGE.  Subsequently including a different major version of this</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span><span class="comment"> * header without #defining NVTX3_CPP_REQUIRE_EXPLICIT_VERSION triggers an error</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span><span class="comment"> * since the symbols would conflict.  Subsequently including of a different</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span><span class="comment"> * minor version within the same major version is allowed. Functionality of</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span><span class="comment"> * minor versions is cumulative, regardless of include order.</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span><span class="comment"> *</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span><span class="comment"> * Since NVTX3_CPP_REQUIRE_EXPLICIT_VERSION allows all combinations of versions</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="comment"> * to coexist without problems within a translation unit, the recommended best</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span><span class="comment"> * practice for instrumenting header-based libraries with NVTX C++ Wrappers is</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span><span class="comment"> * is to #define NVTX3_CPP_REQUIRE_EXPLICIT_VERSION before including nvtx3.hpp,</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="comment"> * #undef it afterward, and only use explicit-version symbols.  This is not</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span><span class="comment"> * necessary in common cases, such as instrumenting a standalone application, or</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="comment"> * static/shared libraries in .cpp files or headers private to those projects.</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span><span class="comment"> */</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span><span class="comment">/* clang-format off */</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="preprocessor">#if !defined(NVTX3_CPP_REQUIRE_EXPLICIT_VERSION)</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>  <span class="comment">/* Define macro used by all definitions in this header to indicate the</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span><span class="comment">   * unversioned symbols should be defined in addition to the versioned ones.</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span><span class="comment">   */</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span><span class="preprocessor">  #define NVTX3_INLINE_THIS_VERSION</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span> </div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span><span class="preprocessor">  #if !defined(NVTX3_CPP_INLINED_VERSION_MAJOR)</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span>    <span class="comment">/* First occurrence of this header in the translation unit.  Define macros</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span><span class="comment">     * indicating which version shall be used for unversioned symbols.</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span><span class="comment">     */</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#ac2d95bad5f74d08ca6660da2a92a4463">   66</a></span><span class="preprocessor">    #define NVTX3_CPP_INLINED_VERSION_MAJOR 1  </span><span class="comment">// NVTX3_CPP_VERSION_MAJOR</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#abb380e5bd6d9e68f116ad5fd2758f861">   78</a></span><span class="preprocessor">    #define NVTX3_CPP_INLINED_VERSION_MINOR 0  </span><span class="comment">// NVTX3_CPP_VERSION_MINOR</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span><span class="preprocessor">  #elif NVTX3_CPP_INLINED_VERSION_MAJOR != NVTX3_CPP_VERSION_MAJOR</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>    <span class="comment">/* Unsupported case -- cannot define unversioned symbols for different major versions</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span><span class="comment">     * in the same translation unit.</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span><span class="comment">     */</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span><span class="preprocessor">    #error \</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span><span class="preprocessor">      &quot;Two different major versions of the NVTX C++ Wrappers are being included in a single .cpp file, with unversioned symbols enabled in both.  Only one major version can enable unversioned symbols in a .cpp file.  To disable unversioned symbols, #define NVTX3_CPP_REQUIRE_EXPLICIT_VERSION before #including nvtx3.hpp, and use the explicit-version symbols instead -- this is the preferred way to use nvtx3.hpp from a header file.&quot;</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span><span class="preprocessor">  #elif (NVTX3_CPP_INLINED_VERSION_MAJOR == NVTX3_CPP_VERSION_MAJOR) &amp;&amp; \</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span><span class="preprocessor">    (NVTX3_CPP_INLINED_VERSION_MINOR &lt; NVTX3_CPP_VERSION_MINOR)</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>    <span class="comment">/* An older minor version of the same major version already defined unversioned</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span><span class="comment">     * symbols.  The new features provided in this header will be inlined</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span><span class="comment">     * redefine the minor version macro to this header&#39;s version.</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span><span class="comment">     */</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span><span class="preprocessor">    #undef NVTX3_CPP_INLINED_VERSION_MINOR</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span><span class="preprocessor">    #define NVTX3_CPP_INLINED_VERSION_MINOR 0  </span><span class="comment">// NVTX3_CPP_VERSION_MINOR</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>    <span class="comment">// else, already have this version or newer, nothing to do</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span><span class="preprocessor">  #endif</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span><span class="comment">/* clang-format on */</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span> </div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span><span class="comment">/* Temporary helper #defines, removed with #undef at end of header */</span></div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span> </div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span><span class="comment">/* Some compilers do not correctly support SFINAE, which is used in this API</span></div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno">  569</span><span class="comment"> * to detect common usage errors and provide clearer error messages (by using</span></div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno">  570</span><span class="comment"> * static_assert) than the compiler would produce otherwise.  These compilers</span></div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno">  571</span><span class="comment"> * will generate errors while compiling this file such as:</span></div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span><span class="comment"> *</span></div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno">  573</span><span class="comment"> *  error: &#39;name&#39; is not a member of &#39;nvtx3::v1::domain::global&#39;</span></div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno">  574</span><span class="comment"> *</span></div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno">  575</span><span class="comment"> * The following compiler versions are known to have this problem, and so are</span></div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span><span class="comment"> * set by default to disable the SFINAE-based checks:</span></div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno">  577</span><span class="comment"> *</span></div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno">  578</span><span class="comment"> * - All MSVC versions prior to VS2017 Update 7 (15.7)</span></div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno">  579</span><span class="comment"> * - GCC 8.1-8.3 (the problem was fixed in GCC 8.4)</span></div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno">  580</span><span class="comment"> *</span></div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno">  581</span><span class="comment"> * If you find your compiler hits this problem, you can work around it by</span></div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno">  582</span><span class="comment"> * defining NVTX3_USE_CHECKED_OVERLOADS_FOR_GET to 0 before including this</span></div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno">  583</span><span class="comment"> * header, or you can add a check for your compiler version to this #if.</span></div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno">  584</span><span class="comment"> * Also, please report the issue on the NVTX GitHub page.</span></div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno">  585</span><span class="comment"> */</span></div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno">  586</span><span class="preprocessor">#if !defined(NVTX3_USE_CHECKED_OVERLOADS_FOR_GET)</span></div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno">  587</span><span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; _MSC_VER &lt; 1914 \</span></div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno">  588</span><span class="preprocessor">  || defined(__GNUC__) &amp;&amp; __GNUC__ == 8 &amp;&amp; __GNUC_MINOR__ &lt; 4</span></div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno">  589</span><span class="preprocessor">#define NVTX3_USE_CHECKED_OVERLOADS_FOR_GET 0</span></div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno">  590</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno">  591</span><span class="preprocessor">#define NVTX3_USE_CHECKED_OVERLOADS_FOR_GET 1</span></div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno">  592</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno">  593</span><span class="preprocessor">#define NVTX3_USE_CHECKED_OVERLOADS_FOR_GET_DEFINED_HERE</span></div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno">  594</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno">  595</span> </div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno">  596</span><span class="comment">/* Within this header, nvtx3::NVTX3_VERSION_NAMESPACE resolves to nvtx3::vX,</span></div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno">  597</span><span class="comment"> * where &quot;X&quot; is the major version number. */</span></div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno">  598</span><span class="preprocessor">#define NVTX3_CONCAT(A, B) A##B</span></div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno">  599</span><span class="preprocessor">#define NVTX3_NAMESPACE_FOR(VERSION) NVTX3_CONCAT(v, VERSION)</span></div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno">  600</span><span class="preprocessor">#define NVTX3_VERSION_NAMESPACE NVTX3_NAMESPACE_FOR(NVTX3_CPP_VERSION_MAJOR)</span></div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno">  601</span> </div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno">  602</span><span class="comment">/* Avoid duplicating #if defined(NVTX3_INLINE_THIS_VERSION) for namespaces</span></div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno">  603</span><span class="comment"> * in each minor version by making a macro to use unconditionally, which</span></div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno">  604</span><span class="comment"> * resolves to &quot;inline&quot; or nothing as appropriate. */</span></div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno">  605</span><span class="preprocessor">#if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno">  606</span><span class="preprocessor">#define NVTX3_INLINE_IF_REQUESTED inline</span></div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno">  607</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno">  608</span><span class="preprocessor">#define NVTX3_INLINE_IF_REQUESTED</span></div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno">  609</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno">  610</span> </div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno">  611</span><span class="comment">/* Enables the use of constexpr when support for C++14 constexpr is present.</span></div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno">  612</span><span class="comment"> *</span></div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno">  613</span><span class="comment"> * Initialization of a class member that is a union to a specific union member</span></div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno">  614</span><span class="comment"> * can only be done in the body of a constructor, not in a member initializer</span></div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno">  615</span><span class="comment"> * list.  A constexpr constructor must have an empty body until C++14, so there</span></div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno">  616</span><span class="comment"> * is no way to make an initializer of a member union constexpr in C++11.  This</span></div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno">  617</span><span class="comment"> * macro allows making functions constexpr in C++14 or newer, but non-constexpr</span></div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno">  618</span><span class="comment"> * in C++11 compilation.  It is used here on constructors that initialize their</span></div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno">  619</span><span class="comment"> * member unions.</span></div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno">  620</span><span class="comment"> */</span></div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno">  621</span><span class="preprocessor">#if __cpp_constexpr &gt;= 201304L</span></div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno">  622</span><span class="preprocessor">#define NVTX3_CONSTEXPR_IF_CPP14 constexpr</span></div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno">  623</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno">  624</span><span class="preprocessor">#define NVTX3_CONSTEXPR_IF_CPP14</span></div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno">  625</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno">  626</span> </div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno">  627</span><span class="comment">// Macro wrappers for C++ attributes</span></div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno">  628</span><span class="preprocessor">#if !defined(__has_cpp_attribute)</span></div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno">  629</span><span class="preprocessor">#define __has_cpp_attribute(x) 0</span></div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno">  630</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno">  631</span><span class="preprocessor">#if __has_cpp_attribute(maybe_unused)</span></div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno">  632</span><span class="preprocessor">#define NVTX3_MAYBE_UNUSED [[maybe_unused]]</span></div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno">  633</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno">  634</span><span class="preprocessor">#define NVTX3_MAYBE_UNUSED</span></div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno">  635</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno">  636</span><span class="preprocessor">#if __has_cpp_attribute(nodiscard)</span></div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno">  637</span><span class="preprocessor">#define NVTX3_NO_DISCARD [[nodiscard]]</span></div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno">  638</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno">  639</span><span class="preprocessor">#define NVTX3_NO_DISCARD</span></div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno">  640</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno">  641</span> </div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno">  642</span> <span class="comment">/* Use a macro for static asserts, which defaults to static_assert, but that</span></div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno">  643</span><span class="comment">  * testing tools can replace with a logging function.  For example:</span></div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno">  644</span><span class="comment">  * #define NVTX3_STATIC_ASSERT(c, m) \</span></div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno">  645</span><span class="comment">  *   do { if (!(c)) printf(&quot;static_assert would fail: %s\n&quot;, m); } while (0)</span></div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno">  646</span><span class="comment">  */</span></div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno">  647</span><span class="preprocessor">#if !defined(NVTX3_STATIC_ASSERT)</span></div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno">  648</span><span class="preprocessor">#define NVTX3_STATIC_ASSERT(condition, message) static_assert(condition, message)</span></div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno">  649</span><span class="preprocessor">#define NVTX3_STATIC_ASSERT_DEFINED_HERE</span></div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno">  650</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno">  651</span> </div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno">  652</span><span class="comment">/* Implementation sections, enclosed in guard macros for each minor version */</span></div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno">  653</span> </div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno">  654</span><span class="preprocessor">#ifndef NVTX3_CPP_DEFINITIONS_V1_0</span></div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno">  655</span><span class="preprocessor">#define NVTX3_CPP_DEFINITIONS_V1_0</span></div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno">  656</span> </div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno">  657</span><span class="preprocessor">#include &quot;nvToolsExt.h&quot;</span></div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno">  658</span> </div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno">  659</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno">  660</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno">  661</span><span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno">  662</span><span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno">  663</span><span class="preprocessor">#include &lt;cstddef&gt;</span></div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno">  664</span> </div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno">  665</span><span class="keyword">namespace </span>nvtx3 {</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno">  666</span> </div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno">  667</span>NVTX3_INLINE_IF_REQUESTED <span class="keyword">namespace </span>NVTX3_VERSION_NAMESPACE</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno">  668</span>{</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno">  669</span> </div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno">  670</span><span class="keyword">namespace </span>detail {</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno">  671</span> </div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno">  672</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Unused&gt;</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno">  673</span><span class="keyword">struct </span>always_false : std::false_type {};</div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno">  674</span> </div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno">  675</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno">  676</span><span class="keyword">struct </span>has_name : std::false_type {};</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno">  677</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno">  678</span><span class="keyword">struct </span>has_name&lt;T, decltype((void)T::name, void())&gt; : std::true_type {};</div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno">  679</span> </div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno">  680</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno">  681</span><span class="keyword">struct </span>has_id : std::false_type {};</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno">  682</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno">  683</span><span class="keyword">struct </span>has_id&lt;T, decltype((void)T::id, void())&gt; : std::true_type {};</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno">  684</span> </div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno">  685</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno">  686</span><span class="keyword">struct </span>has_message : std::false_type {};</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno">  687</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno">  688</span><span class="keyword">struct </span>has_message&lt;T, decltype((void)T::message, void())&gt; : std::true_type {};</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno">  689</span> </div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno">  690</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno">  691</span><span class="keyword">struct </span>is_c_string : std::false_type {};</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno">  692</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno">  693</span><span class="keyword">struct </span>is_c_string&lt;T, typename std::enable_if&lt;</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno">  694</span>  std::is_convertible&lt;T, char const*   &gt;::value ||</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno">  695</span>  std::is_convertible&lt;T, wchar_t const*&gt;::value</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno">  696</span>&gt;::type&gt; : std::true_type {};</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno">  697</span> </div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno">  698</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno">  699</span><span class="keyword">using </span>is_uint32 = std::is_same&lt;typename std::decay&lt;T&gt;::type, uint32_t&gt;;</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno">  700</span> </div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno">  701</span>}  <span class="comment">// namespace detail</span></div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno">  702</span> </div>
<div class="foldopen" id="foldopen00756" data-start="{" data-end="};">
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html">  756</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> {</div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno">  757</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno">  758</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno">  759</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno">  760</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno">  761</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno">  762</span> </div>
<div class="foldopen" id="foldopen00774" data-start="{" data-end="};">
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1domain_1_1global.html">  774</a></span>  <span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1domain_1_1global.html">global</a> {</div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno">  775</span>  };</div>
</div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno">  776</span> </div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno">  777</span><span class="preprocessor">#if NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno">  822</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = <a class="code hl_struct" href="structnvtx3_1_1v1_1_1domain_1_1global.html">global</a>,</div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno">  823</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno">  824</span>      detail::is_c_string&lt;<span class="keyword">decltype</span>(D::name)&gt;::value</div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno">  825</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen00826" data-start="{" data-end="}">
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">  826</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno">  827</span>  {</div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno">  828</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> d(D::name);</div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno">  829</span>    <span class="keywordflow">return</span> d;</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno">  830</span>  }</div>
</div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno">  831</span> </div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno">  837</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = global,</div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno">  838</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno">  839</span>      !detail::is_c_string&lt;<span class="keyword">decltype</span>(D::name)&gt;::value</div>
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno">  840</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen00841" data-start="{" data-end="}">
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">  841</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno">  842</span>  {</div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno">  843</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;D&gt;::value,</div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno">  844</span>      <span class="stringliteral">&quot;Type used to identify an NVTX domain must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno">  845</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is not &quot;</span></div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno">  846</span>      <span class="stringliteral">&quot;convertible to either of those types&quot;</span>);</div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno">  847</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno">  848</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno">  849</span>  }</div>
</div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno">  850</span> </div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno">  855</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = global,</div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno">  856</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno">  857</span>      !detail::has_name&lt;D&gt;::value</div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno">  858</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen00859" data-start="{" data-end="}">
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">  859</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">get</a>() noexcept</div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno">  860</span>  {</div>
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno">  861</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;D&gt;::value,</div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno">  862</span>      <span class="stringliteral">&quot;Type used to identify an NVTX domain must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno">  863</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is missing&quot;</span>);</div>
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno">  864</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno">  865</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno">  866</span>  }</div>
</div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno">  867</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno">  868</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = global&gt;</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno">  869</span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; get() noexcept</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno">  870</span>  {</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno">  871</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> d(D::name);</div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno">  872</span>    <span class="keywordflow">return</span> d;</div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno">  873</span>  }</div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno">  874</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno">  875</span> </div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1domain.html#aa569f92fc6b823641524ba5daa5baa66">  882</a></span>  <span class="keyword">operator</span> nvtxDomainHandle_t() const noexcept { <span class="keywordflow">return</span> _domain; }</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno">  883</span> </div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno">  884</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno">  893</span>  <span class="keyword">explicit</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* name) noexcept : _domain{nvtxDomainCreateA(name)} {}</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno">  894</span> </div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno">  903</span>  <span class="keyword">explicit</span> domain(<span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* name) noexcept : _domain{nvtxDomainCreateW(name)} {}</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno">  904</span> </div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno">  913</span>  <span class="keyword">explicit</span> domain(std::string <span class="keyword">const</span>&amp; name) noexcept : domain{name.c_str()} {}</div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno">  914</span> </div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno">  923</span>  <span class="keyword">explicit</span> domain(std::wstring <span class="keyword">const</span>&amp; name) noexcept : domain{name.c_str()} {}</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno">  924</span> </div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno">  933</span>  <span class="keyword">constexpr</span> domain() noexcept {}</div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno">  934</span> </div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno">  949</span>  ~domain() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno">  950</span> </div>
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno">  951</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno">  952</span>  nvtxDomainHandle_t <span class="keyword">const</span> _domain{};  </div>
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno">  953</span>};</div>
</div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno">  954</span> </div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno">  968</span><span class="keyword">template</span> &lt;&gt;</div>
<div class="foldopen" id="foldopen00969" data-start="{" data-end="}">
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a2035d9aeb0dd80cb41c64352783171b9">  969</a></span>NVTX3_NO_DISCARD <span class="keyword">inline</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span>&amp; domain::get&lt;domain::global&gt;() noexcept</div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno">  970</span>{</div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno">  971</span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1domain.html">domain</a> <span class="keyword">const</span> d{};</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno">  972</span>  <span class="keywordflow">return</span> d;</div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno">  973</span>}</div>
</div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno">  974</span> </div>
<div class="foldopen" id="foldopen00980" data-start="{" data-end="};">
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html">  980</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a> {</div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">  982</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> = uint8_t;</div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno">  983</span> </div>
<div class="foldopen" id="foldopen00994" data-start="{" data-end="}">
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a558a299dbc7c98f3d9b7cdd4a5e013e4">  994</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1rgb.html#a558a299dbc7c98f3d9b7cdd4a5e013e4">rgb</a>(</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno">  995</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> red_,</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno">  996</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> green_,</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno">  997</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> blue_) noexcept</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno">  998</span>    : red{red_}, green{green_}, blue{blue_}</div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno">  999</span>  {</div>
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span>  }</div>
</div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span> </div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a0ba9bc1b62447a26b2763c2e0f89db58"> 1002</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> red{};    </div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a3392ec8cdbe24db639f6bc57904647c3"> 1003</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> green{};  </div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1rgb.html#a0d5c114d99170ed8922dbdd743ec580f"> 1004</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> blue{};   </div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span>};</div>
</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> </div>
<div class="foldopen" id="foldopen01012" data-start="{" data-end="};">
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1argb.html"> 1012</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1argb.html">argb</a> final : <a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a> {</div>
<div class="foldopen" id="foldopen01025" data-start="{" data-end="}">
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1argb.html#afe825f33bf3e68178c1df87d86ec9d93"> 1025</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1argb.html#afe825f33bf3e68178c1df87d86ec9d93">argb</a>(</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> alpha_,</div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> red_,</div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> green_,</div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span>    <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> blue_) noexcept</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span>    : <a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a>{red_, green_, blue_}, alpha{alpha_}</div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span>  {</div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span>  }</div>
</div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> </div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1argb.html#af2b1b511212ab1c6cb1f5a340dc6b339"> 1034</a></span>  <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">component_type</a> alpha{};  </div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span>};</div>
</div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span> </div>
<div class="foldopen" id="foldopen01046" data-start="{" data-end="};">
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html"> 1046</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> {</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f"> 1049</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">value_type</a> = uint32_t;</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span> </div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a671a9e63379a2896f5c689fb0a37f0a9"> 1068</a></span>  <span class="keyword">constexpr</span> <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#a671a9e63379a2896f5c689fb0a37f0a9">color</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">value_type</a> hex_code) noexcept : _value{hex_code} {}</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> </div>
<div class="foldopen" id="foldopen01076" data-start="{" data-end="}">
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#abd11ca09f1b3a66041cea45d4141dc37"> 1076</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#abd11ca09f1b3a66041cea45d4141dc37">color</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1argb.html">argb</a> argb_) noexcept</div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>{from_bytes_msb_to_lsb(argb_.alpha, argb_.red, argb_.green, argb_.blue)}</div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span>  {</div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span>  }</div>
</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span> </div>
<div class="foldopen" id="foldopen01089" data-start="{" data-end="}">
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a47084ed086b5071cd7b070b0a4611e24"> 1089</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#a47084ed086b5071cd7b070b0a4611e24">color</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1rgb.html">rgb</a> rgb_) noexcept</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>{from_bytes_msb_to_lsb(0xFF, rgb_.red, rgb_.green, rgb_.blue)}</div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span>  {</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span>  }</div>
</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span> </div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#a44f694cefa3afee1d9dfbf2fde3a06f4"> 1098</a></span>  <span class="keyword">constexpr</span> <a class="code hl_typedef" href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">value_type</a> <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#a44f694cefa3afee1d9dfbf2fde3a06f4">get_value</a>() const noexcept { <span class="keywordflow">return</span> _value; }</div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span> </div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1color.html#af550398d7d76d9452576860a4363d75c"> 1104</a></span>  <span class="keyword">constexpr</span> nvtxColorType_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1color.html#af550398d7d76d9452576860a4363d75c">get_type</a>() const noexcept { <span class="keywordflow">return</span> _type; }</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span> </div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>() = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">~color</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span> </div>
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span>  <span class="keyword">constexpr</span> <span class="keyword">static</span> value_type from_bytes_msb_to_lsb(</div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span>    uint8_t byte3,</div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span>    uint8_t byte2,</div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span>    uint8_t byte1,</div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span>    uint8_t byte0) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span>  {</div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span>    <span class="keywordflow">return</span> uint32_t{byte3} &lt;&lt; 24 | uint32_t{byte2} &lt;&lt; 16 | uint32_t{byte1} &lt;&lt; 8 | uint32_t{byte0};</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span>  }</div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span> </div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span>  value_type _value{};                     </div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span>  nvtxColorType_t _type{NVTX_COLOR_ARGB};  </div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span>};</div>
</div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span> </div>
<div class="foldopen" id="foldopen01153" data-start="{" data-end="};">
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html"> 1153</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> {</div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0"> 1156</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> = uint32_t;</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span> </div>
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html#a16b26c66ef40850b7bf79fb8e8b9ccec"> 1167</a></span>  <span class="keyword">constexpr</span> <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1category.html#a16b26c66ef40850b7bf79fb8e8b9ccec">category</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <span class="keywordtype">id</span>) noexcept : id_{<span class="keywordtype">id</span>} {}</div>
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span> </div>
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1category.html#a5d59d395dff9e74ec8bd6154581fc345"> 1173</a></span>  <span class="keyword">constexpr</span> <a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <a class="code hl_function" href="classnvtx3_1_1v1_1_1category.html#a5d59d395dff9e74ec8bd6154581fc345">get_id</a>() const noexcept { <span class="keywordflow">return</span> id_; }</div>
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span> </div>
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>() = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"> 1176</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">~category</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span> </div>
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span>  id_type id_{};  </div>
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span>};</div>
</div>
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span> </div>
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen01236" data-start="{" data-end="};">
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html"> 1236</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> final : <span class="keyword">public</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> {</div>
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span><span class="preprocessor">#if NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"> 1273</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C,</div>
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"> 1274</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"> 1275</span>      detail::is_c_string&lt;<span class="keyword">decltype</span>(C::name)&gt;::value &amp;&amp;</div>
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span>      detail::is_uint32&lt;<span class="keyword">decltype</span>(C::id)&gt;::value</div>
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"> 1277</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01278" data-start="{" data-end="}">
<div class="line"><a id="l01278" name="l01278"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30"> 1278</a></span>  <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">get</a>() noexcept</div>
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"> 1279</span>  {</div>
<div class="line"><a id="l01280" name="l01280"></a><span class="lineno"> 1280</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> cat(C::id, C::name);</div>
<div class="line"><a id="l01281" name="l01281"></a><span class="lineno"> 1281</span>    <span class="keywordflow">return</span> cat;</div>
<div class="line"><a id="l01282" name="l01282"></a><span class="lineno"> 1282</span>  }</div>
</div>
<div class="line"><a id="l01283" name="l01283"></a><span class="lineno"> 1283</span> </div>
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C,</div>
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span>      !detail::is_c_string&lt;<span class="keyword">decltype</span>(C::name)&gt;::value ||</div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span>      !detail::is_uint32&lt;<span class="keyword">decltype</span>(C::id)&gt;::value</div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01295" data-start="{" data-end="}">
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30"> 1295</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">get</a>() noexcept</div>
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span>  {</div>
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"> 1297</span>    NVTX3_STATIC_ASSERT(detail::is_c_string&lt;<span class="keyword">decltype</span>(C::name)&gt;::value,</div>
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"> 1298</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"> 1299</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is not &quot;</span></div>
<div class="line"><a id="l01300" name="l01300"></a><span class="lineno"> 1300</span>      <span class="stringliteral">&quot;convertible to either of those types&quot;</span>);</div>
<div class="line"><a id="l01301" name="l01301"></a><span class="lineno"> 1301</span>    NVTX3_STATIC_ASSERT(detail::is_uint32&lt;<span class="keyword">decltype</span>(C::id)&gt;::value,</div>
<div class="line"><a id="l01302" name="l01302"></a><span class="lineno"> 1302</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span>      <span class="stringliteral">&quot;called &#39;id&#39; of type uint32_t -- &#39;id&#39; member is the wrong type&quot;</span>);</div>
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span>  }</div>
</div>
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"> 1307</span> </div>
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"> 1312</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C,</div>
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"> 1313</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01314" name="l01314"></a><span class="lineno"> 1314</span>      !detail::has_name&lt;C&gt;::value ||</div>
<div class="line"><a id="l01315" name="l01315"></a><span class="lineno"> 1315</span>      !detail::has_id&lt;C&gt;::value</div>
<div class="line"><a id="l01316" name="l01316"></a><span class="lineno"> 1316</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01317" data-start="{" data-end="}">
<div class="line"><a id="l01317" name="l01317"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30"> 1317</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">get</a>() noexcept</div>
<div class="line"><a id="l01318" name="l01318"></a><span class="lineno"> 1318</span>  {</div>
<div class="line"><a id="l01319" name="l01319"></a><span class="lineno"> 1319</span>    NVTX3_STATIC_ASSERT(detail::has_name&lt;C&gt;::value,</div>
<div class="line"><a id="l01320" name="l01320"></a><span class="lineno"> 1320</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01321" name="l01321"></a><span class="lineno"> 1321</span>      <span class="stringliteral">&quot;called &#39;name&#39; of type const char* or const wchar_t* -- &#39;name&#39; member is missing&quot;</span>);</div>
<div class="line"><a id="l01322" name="l01322"></a><span class="lineno"> 1322</span>    NVTX3_STATIC_ASSERT(detail::has_id&lt;C&gt;::value,</div>
<div class="line"><a id="l01323" name="l01323"></a><span class="lineno"> 1323</span>      <span class="stringliteral">&quot;Type used to name an NVTX category must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01324" name="l01324"></a><span class="lineno"> 1324</span>      <span class="stringliteral">&quot;called &#39;id&#39; of type uint32_t -- &#39;id&#39; member is missing&quot;</span>);</div>
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"> 1325</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"> 1327</span>  }</div>
</div>
<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"> 1329</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C&gt;</div>
<div class="line"><a id="l01330" name="l01330"></a><span class="lineno"> 1330</span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span>&amp; get() noexcept</div>
<div class="line"><a id="l01331" name="l01331"></a><span class="lineno"> 1331</span>  {</div>
<div class="line"><a id="l01332" name="l01332"></a><span class="lineno"> 1332</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a> <span class="keyword">const</span> cat(C::id, C::name);</div>
<div class="line"><a id="l01333" name="l01333"></a><span class="lineno"> 1333</span>    <span class="keywordflow">return</span> cat;</div>
<div class="line"><a id="l01334" name="l01334"></a><span class="lineno"> 1334</span>  }</div>
<div class="line"><a id="l01335" name="l01335"></a><span class="lineno"> 1335</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01336" name="l01336"></a><span class="lineno"> 1336</span> </div>
<div class="line"><a id="l01337" name="l01337"></a><span class="lineno"> 1337</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01338" name="l01338"></a><span class="lineno"> 1338</span>  <span class="comment">// Default constructor is only used internally for static_assert(false) cases.</span></div>
<div class="line"><a id="l01339" name="l01339"></a><span class="lineno"> 1339</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in</a>() noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>{0} {}</div>
<div class="line"><a id="l01340" name="l01340"></a><span class="lineno"> 1340</span> </div>
<div class="line"><a id="l01341" name="l01341"></a><span class="lineno"> 1341</span> <span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen01352" data-start="{" data-end="}">
<div class="line"><a id="l01352" name="l01352"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a7fe4261f6a0b9d1cfb6e566d8ff2135f"> 1352</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a7fe4261f6a0b9d1cfb6e566d8ff2135f">named_category_in</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <span class="keywordtype">id</span>, <span class="keywordtype">char</span> <span class="keyword">const</span>* name) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>{<span class="keywordtype">id</span>}</div>
<div class="line"><a id="l01353" name="l01353"></a><span class="lineno"> 1353</span>  {</div>
<div class="line"><a id="l01354" name="l01354"></a><span class="lineno"> 1354</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l01355" name="l01355"></a><span class="lineno"> 1355</span>    nvtxDomainNameCategoryA(domain::get&lt;D&gt;(), get_id(), name);</div>
<div class="line"><a id="l01356" name="l01356"></a><span class="lineno"> 1356</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01357" name="l01357"></a><span class="lineno"> 1357</span>    (void)<span class="keywordtype">id</span>;</div>
<div class="line"><a id="l01358" name="l01358"></a><span class="lineno"> 1358</span>    (void)name;</div>
<div class="line"><a id="l01359" name="l01359"></a><span class="lineno"> 1359</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01360" name="l01360"></a><span class="lineno"> 1360</span>  }</div>
</div>
<div class="line"><a id="l01361" name="l01361"></a><span class="lineno"> 1361</span> </div>
<div class="foldopen" id="foldopen01372" data-start="{" data-end="}">
<div class="line"><a id="l01372" name="l01372"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1named__category__in.html#a0b8ac1f00f1c0686858a20884c8eb19a"> 1372</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1named__category__in.html#a0b8ac1f00f1c0686858a20884c8eb19a">named_category_in</a>(<a class="code hl_typedef" href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">id_type</a> <span class="keywordtype">id</span>, <span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* name) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a>{<span class="keywordtype">id</span>}</div>
<div class="line"><a id="l01373" name="l01373"></a><span class="lineno"> 1373</span>  {</div>
<div class="line"><a id="l01374" name="l01374"></a><span class="lineno"> 1374</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l01375" name="l01375"></a><span class="lineno"> 1375</span>    nvtxDomainNameCategoryW(domain::get&lt;D&gt;(), get_id(), name);</div>
<div class="line"><a id="l01376" name="l01376"></a><span class="lineno"> 1376</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01377" name="l01377"></a><span class="lineno"> 1377</span>    (void)<span class="keywordtype">id</span>;</div>
<div class="line"><a id="l01378" name="l01378"></a><span class="lineno"> 1378</span>    (void)name;</div>
<div class="line"><a id="l01379" name="l01379"></a><span class="lineno"> 1379</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01380" name="l01380"></a><span class="lineno"> 1380</span>  }</div>
</div>
<div class="line"><a id="l01381" name="l01381"></a><span class="lineno"> 1381</span>};</div>
</div>
<div class="line"><a id="l01382" name="l01382"></a><span class="lineno"> 1382</span> </div>
<div class="line"><a id="l01387" name="l01387"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a5ffa040266b85b6fb131dcb9ade33a0a"> 1387</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1named__category__in.html">named_category_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l01388" name="l01388"></a><span class="lineno"> 1388</span> </div>
<div class="line"><a id="l01435" name="l01435"></a><span class="lineno"> 1435</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen01436" data-start="{" data-end="};">
<div class="line"><a id="l01436" name="l01436"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html"> 1436</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> {</div>
<div class="line"><a id="l01437" name="l01437"></a><span class="lineno"> 1437</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"> 1438</span><span class="preprocessor">#if NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l01472" name="l01472"></a><span class="lineno"> 1472</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div>
<div class="line"><a id="l01473" name="l01473"></a><span class="lineno"> 1473</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01474" name="l01474"></a><span class="lineno"> 1474</span>      detail::is_c_string&lt;<span class="keyword">decltype</span>(M::message)&gt;::value</div>
<div class="line"><a id="l01475" name="l01475"></a><span class="lineno"> 1475</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01476" data-start="{" data-end="}">
<div class="line"><a id="l01476" name="l01476"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567"> 1476</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l01477" name="l01477"></a><span class="lineno"> 1477</span>  {</div>
<div class="line"><a id="l01478" name="l01478"></a><span class="lineno"> 1478</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> regstr(M::message);</div>
<div class="line"><a id="l01479" name="l01479"></a><span class="lineno"> 1479</span>    <span class="keywordflow">return</span> regstr;</div>
<div class="line"><a id="l01480" name="l01480"></a><span class="lineno"> 1480</span>  }</div>
</div>
<div class="line"><a id="l01481" name="l01481"></a><span class="lineno"> 1481</span> </div>
<div class="line"><a id="l01487" name="l01487"></a><span class="lineno"> 1487</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div>
<div class="line"><a id="l01488" name="l01488"></a><span class="lineno"> 1488</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01489" name="l01489"></a><span class="lineno"> 1489</span>      !detail::is_c_string&lt;<span class="keyword">decltype</span>(M::message)&gt;::value</div>
<div class="line"><a id="l01490" name="l01490"></a><span class="lineno"> 1490</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01491" data-start="{" data-end="}">
<div class="line"><a id="l01491" name="l01491"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567"> 1491</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">get</a>() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l01492" name="l01492"></a><span class="lineno"> 1492</span>  {</div>
<div class="line"><a id="l01493" name="l01493"></a><span class="lineno"> 1493</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;M&gt;::value,</div>
<div class="line"><a id="l01494" name="l01494"></a><span class="lineno"> 1494</span>      <span class="stringliteral">&quot;Type used to register an NVTX string must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01495" name="l01495"></a><span class="lineno"> 1495</span>      <span class="stringliteral">&quot;called &#39;message&#39; of type const char* or const wchar_t* -- &#39;message&#39; member is &quot;</span></div>
<div class="line"><a id="l01496" name="l01496"></a><span class="lineno"> 1496</span>      <span class="stringliteral">&quot;not convertible to either of those types&quot;</span>);</div>
<div class="line"><a id="l01497" name="l01497"></a><span class="lineno"> 1497</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01498" name="l01498"></a><span class="lineno"> 1498</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01499" name="l01499"></a><span class="lineno"> 1499</span>  }</div>
</div>
<div class="line"><a id="l01500" name="l01500"></a><span class="lineno"> 1500</span> </div>
<div class="line"><a id="l01505" name="l01505"></a><span class="lineno"> 1505</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M,</div>
<div class="line"><a id="l01506" name="l01506"></a><span class="lineno"> 1506</span>    <span class="keyword">typename</span> std::enable_if&lt;</div>
<div class="line"><a id="l01507" name="l01507"></a><span class="lineno"> 1507</span>      !detail::has_message&lt;M&gt;::value</div>
<div class="line"><a id="l01508" name="l01508"></a><span class="lineno"> 1508</span>    , <span class="keywordtype">int</span>&gt;::type = 0&gt;</div>
<div class="foldopen" id="foldopen01509" data-start="{" data-end="}">
<div class="line"><a id="l01509" name="l01509"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567"> 1509</a></span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">get</a>() noexcept</div>
<div class="line"><a id="l01510" name="l01510"></a><span class="lineno"> 1510</span>  {</div>
<div class="line"><a id="l01511" name="l01511"></a><span class="lineno"> 1511</span>    NVTX3_STATIC_ASSERT(detail::always_false&lt;M&gt;::value,</div>
<div class="line"><a id="l01512" name="l01512"></a><span class="lineno"> 1512</span>      <span class="stringliteral">&quot;Type used to register an NVTX string must contain a static constexpr member &quot;</span></div>
<div class="line"><a id="l01513" name="l01513"></a><span class="lineno"> 1513</span>      <span class="stringliteral">&quot;called &#39;message&#39; of type const char* or const wchar_t* -- &#39;message&#39; member &quot;</span></div>
<div class="line"><a id="l01514" name="l01514"></a><span class="lineno"> 1514</span>      <span class="stringliteral">&quot;is missing&quot;</span>);</div>
<div class="line"><a id="l01515" name="l01515"></a><span class="lineno"> 1515</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> unused;</div>
<div class="line"><a id="l01516" name="l01516"></a><span class="lineno"> 1516</span>    <span class="keywordflow">return</span> unused;  <span class="comment">// Function must compile for static_assert to be triggered</span></div>
<div class="line"><a id="l01517" name="l01517"></a><span class="lineno"> 1517</span>  }</div>
</div>
<div class="line"><a id="l01518" name="l01518"></a><span class="lineno"> 1518</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l01519" name="l01519"></a><span class="lineno"> 1519</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> M&gt;</div>
<div class="line"><a id="l01520" name="l01520"></a><span class="lineno"> 1520</span>  NVTX3_NO_DISCARD <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp; get() noexcept</div>
<div class="line"><a id="l01521" name="l01521"></a><span class="lineno"> 1521</span>  {</div>
<div class="line"><a id="l01522" name="l01522"></a><span class="lineno"> 1522</span>    <span class="keyword">static</span> <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span> regstr(M::message);</div>
<div class="line"><a id="l01523" name="l01523"></a><span class="lineno"> 1523</span>    <span class="keywordflow">return</span> regstr;</div>
<div class="line"><a id="l01524" name="l01524"></a><span class="lineno"> 1524</span>  }</div>
<div class="line"><a id="l01525" name="l01525"></a><span class="lineno"> 1525</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01526" name="l01526"></a><span class="lineno"> 1526</span> </div>
<div class="foldopen" id="foldopen01538" data-start="{" data-end="}">
<div class="line"><a id="l01538" name="l01538"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a059adcf011e73293c1d76a512d316524"> 1538</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a059adcf011e73293c1d76a512d316524">registered_string_in</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg) noexcept</div>
<div class="line"><a id="l01539" name="l01539"></a><span class="lineno"> 1539</span>    : handle_{nvtxDomainRegisterStringA(domain::get&lt;D&gt;(), msg)}</div>
<div class="line"><a id="l01540" name="l01540"></a><span class="lineno"> 1540</span>  {</div>
<div class="line"><a id="l01541" name="l01541"></a><span class="lineno"> 1541</span>  }</div>
</div>
<div class="line"><a id="l01542" name="l01542"></a><span class="lineno"> 1542</span> </div>
<div class="foldopen" id="foldopen01554" data-start="{" data-end="}">
<div class="line"><a id="l01554" name="l01554"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a7e8f0b775f6363e2187f50648c5a44f5"> 1554</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a7e8f0b775f6363e2187f50648c5a44f5">registered_string_in</a>(std::string <span class="keyword">const</span>&amp; msg) noexcept</div>
<div class="line"><a id="l01555" name="l01555"></a><span class="lineno"> 1555</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>{msg.c_str()} {}</div>
</div>
<div class="line"><a id="l01556" name="l01556"></a><span class="lineno"> 1556</span> </div>
<div class="foldopen" id="foldopen01568" data-start="{" data-end="}">
<div class="line"><a id="l01568" name="l01568"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#ab9d2c81308244bec4198167e2c8d3d4c"> 1568</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#ab9d2c81308244bec4198167e2c8d3d4c">registered_string_in</a>(<span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* msg) noexcept</div>
<div class="line"><a id="l01569" name="l01569"></a><span class="lineno"> 1569</span>    : handle_{nvtxDomainRegisterStringW(domain::get&lt;D&gt;(), msg)}</div>
<div class="line"><a id="l01570" name="l01570"></a><span class="lineno"> 1570</span>  {</div>
<div class="line"><a id="l01571" name="l01571"></a><span class="lineno"> 1571</span>  }</div>
</div>
<div class="line"><a id="l01572" name="l01572"></a><span class="lineno"> 1572</span> </div>
<div class="foldopen" id="foldopen01584" data-start="{" data-end="}">
<div class="line"><a id="l01584" name="l01584"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a90f6112510f0745a373a7fdb162b85de"> 1584</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a90f6112510f0745a373a7fdb162b85de">registered_string_in</a>(std::wstring <span class="keyword">const</span>&amp; msg) noexcept</div>
<div class="line"><a id="l01585" name="l01585"></a><span class="lineno"> 1585</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>{msg.c_str()} {}</div>
</div>
<div class="line"><a id="l01586" name="l01586"></a><span class="lineno"> 1586</span> </div>
<div class="line"><a id="l01591" name="l01591"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1registered__string__in.html#a13d5f54f46e91073677fcfbe094dd261"> 1591</a></span>  nvtxStringHandle_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1registered__string__in.html#a13d5f54f46e91073677fcfbe094dd261">get_handle</a>() const noexcept { <span class="keywordflow">return</span> handle_; }</div>
<div class="line"><a id="l01592" name="l01592"></a><span class="lineno"> 1592</span> </div>
<div class="line"><a id="l01593" name="l01593"></a><span class="lineno"> 1593</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l01594" name="l01594"></a><span class="lineno"> 1594</span>  <span class="comment">// Default constructor is only used internally for static_assert(false) cases.</span></div>
<div class="line"><a id="l01595" name="l01595"></a><span class="lineno"> 1595</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>() noexcept {}</div>
<div class="line"><a id="l01596" name="l01596"></a><span class="lineno"> 1596</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l01597" name="l01597"></a><span class="lineno"> 1597</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">~registered_string_in</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01598" name="l01598"></a><span class="lineno"> 1598</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01599" name="l01599"></a><span class="lineno"> 1599</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01600" name="l01600"></a><span class="lineno"> 1600</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01601" name="l01601"></a><span class="lineno"> 1601</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l01602" name="l01602"></a><span class="lineno"> 1602</span> </div>
<div class="line"><a id="l01603" name="l01603"></a><span class="lineno"> 1603</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01604" name="l01604"></a><span class="lineno"> 1604</span>  nvtxStringHandle_t handle_{};  </div>
<div class="line"><a id="l01606" name="l01606"></a><span class="lineno"> 1606</span>};</div>
</div>
<div class="line"><a id="l01607" name="l01607"></a><span class="lineno"> 1607</span> </div>
<div class="line"><a id="l01612" name="l01612"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a952cb27f352570421161c01763effe63"> 1612</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l01613" name="l01613"></a><span class="lineno"> 1613</span> </div>
<div class="foldopen" id="foldopen01651" data-start="{" data-end="};">
<div class="line"><a id="l01651" name="l01651"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html"> 1651</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a> {</div>
<div class="line"><a id="l01652" name="l01652"></a><span class="lineno"> 1652</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01653" name="l01653"></a><span class="lineno"> 1653</span>  <span class="keyword">using </span>value_type = nvtxMessageValue_t;</div>
<div class="line"><a id="l01654" name="l01654"></a><span class="lineno"> 1654</span> </div>
<div class="foldopen" id="foldopen01660" data-start="{" data-end="}">
<div class="line"><a id="l01660" name="l01660"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#abdbef47b3202d55a8b956da6b1296448"> 1660</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#abdbef47b3202d55a8b956da6b1296448">message</a>(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg) noexcept : type_{NVTX_MESSAGE_TYPE_ASCII}</div>
<div class="line"><a id="l01661" name="l01661"></a><span class="lineno"> 1661</span>  {</div>
<div class="line"><a id="l01662" name="l01662"></a><span class="lineno"> 1662</span>    value_.ascii = msg;</div>
<div class="line"><a id="l01663" name="l01663"></a><span class="lineno"> 1663</span>  }</div>
</div>
<div class="line"><a id="l01664" name="l01664"></a><span class="lineno"> 1664</span> </div>
<div class="line"><a id="l01670" name="l01670"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a0864f7bb6f147a8e45241883fc53d2bf"> 1670</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a0864f7bb6f147a8e45241883fc53d2bf">message</a>(std::string <span class="keyword">const</span>&amp; msg) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a>{msg.c_str()} {}</div>
<div class="line"><a id="l01671" name="l01671"></a><span class="lineno"> 1671</span> </div>
<div class="line"><a id="l01680" name="l01680"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#ad5fcc11a05dfb819fcf3238ae90131a0"> 1680</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#ad5fcc11a05dfb819fcf3238ae90131a0">message</a>(std::string&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01681" name="l01681"></a><span class="lineno"> 1681</span> </div>
<div class="foldopen" id="foldopen01687" data-start="{" data-end="}">
<div class="line"><a id="l01687" name="l01687"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a15e5e0153c1ccb5db9db7ed35ed61481"> 1687</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a15e5e0153c1ccb5db9db7ed35ed61481">message</a>(<span class="keywordtype">wchar_t</span> <span class="keyword">const</span>* msg) noexcept : type_{NVTX_MESSAGE_TYPE_UNICODE}</div>
<div class="line"><a id="l01688" name="l01688"></a><span class="lineno"> 1688</span>  {</div>
<div class="line"><a id="l01689" name="l01689"></a><span class="lineno"> 1689</span>    value_.unicode = msg;</div>
<div class="line"><a id="l01690" name="l01690"></a><span class="lineno"> 1690</span>  }</div>
</div>
<div class="line"><a id="l01691" name="l01691"></a><span class="lineno"> 1691</span> </div>
<div class="line"><a id="l01697" name="l01697"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#af152cd392b2bd13dd1fd00fbf2d29c09"> 1697</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#af152cd392b2bd13dd1fd00fbf2d29c09">message</a>(std::wstring <span class="keyword">const</span>&amp; msg) noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a>{msg.c_str()} {}</div>
<div class="line"><a id="l01698" name="l01698"></a><span class="lineno"> 1698</span> </div>
<div class="line"><a id="l01707" name="l01707"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a3a8b73acb3c9cd2a5d78fe94efb0a9db"> 1707</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a3a8b73acb3c9cd2a5d78fe94efb0a9db">message</a>(std::wstring&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l01708" name="l01708"></a><span class="lineno"> 1708</span> </div>
<div class="line"><a id="l01717" name="l01717"></a><span class="lineno"> 1717</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> D&gt;</div>
<div class="foldopen" id="foldopen01718" data-start="{" data-end="}">
<div class="line"><a id="l01718" name="l01718"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a2827347a64c6c91518f5191eade74054"> 1718</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a2827347a64c6c91518f5191eade74054">message</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1registered__string__in.html">registered_string_in&lt;D&gt;</a> <span class="keyword">const</span>&amp; msg) noexcept</div>
<div class="line"><a id="l01719" name="l01719"></a><span class="lineno"> 1719</span>    : type_{NVTX_MESSAGE_TYPE_REGISTERED}</div>
<div class="line"><a id="l01720" name="l01720"></a><span class="lineno"> 1720</span>  {</div>
<div class="line"><a id="l01721" name="l01721"></a><span class="lineno"> 1721</span>    value_.registered = msg.get_handle();</div>
<div class="line"><a id="l01722" name="l01722"></a><span class="lineno"> 1722</span>  }</div>
</div>
<div class="line"><a id="l01723" name="l01723"></a><span class="lineno"> 1723</span> </div>
<div class="foldopen" id="foldopen01730" data-start="{" data-end="}">
<div class="line"><a id="l01730" name="l01730"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#ad16d6a6518feb8f438faf0dbe052a4ee"> 1730</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#ad16d6a6518feb8f438faf0dbe052a4ee">message</a>(</div>
<div class="line"><a id="l01731" name="l01731"></a><span class="lineno"> 1731</span>    nvtxMessageType_t <span class="keyword">const</span>&amp; type,</div>
<div class="line"><a id="l01732" name="l01732"></a><span class="lineno"> 1732</span>    nvtxMessageValue_t <span class="keyword">const</span>&amp; value) noexcept</div>
<div class="line"><a id="l01733" name="l01733"></a><span class="lineno"> 1733</span>    : type_{type}, value_(value)</div>
<div class="line"><a id="l01734" name="l01734"></a><span class="lineno"> 1734</span>  {</div>
<div class="line"><a id="l01735" name="l01735"></a><span class="lineno"> 1735</span>  }</div>
</div>
<div class="line"><a id="l01736" name="l01736"></a><span class="lineno"> 1736</span> </div>
<div class="foldopen" id="foldopen01742" data-start="{" data-end="}">
<div class="line"><a id="l01742" name="l01742"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#ab0e7eae70ce91c6f8aa9be048fc146bd"> 1742</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#ab0e7eae70ce91c6f8aa9be048fc146bd">message</a>(nvtxStringHandle_t handle) noexcept</div>
<div class="line"><a id="l01743" name="l01743"></a><span class="lineno"> 1743</span>    : type_{NVTX_MESSAGE_TYPE_REGISTERED}</div>
<div class="line"><a id="l01744" name="l01744"></a><span class="lineno"> 1744</span>  {</div>
<div class="line"><a id="l01745" name="l01745"></a><span class="lineno"> 1745</span>    value_.registered = handle;</div>
<div class="line"><a id="l01746" name="l01746"></a><span class="lineno"> 1746</span>  }</div>
</div>
<div class="line"><a id="l01747" name="l01747"></a><span class="lineno"> 1747</span> </div>
<div class="line"><a id="l01752" name="l01752"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a17d2eaf8f1c653ddf6237425833f3cfc"> 1752</a></span>  <span class="keyword">constexpr</span> value_type <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a17d2eaf8f1c653ddf6237425833f3cfc">get_value</a>() const noexcept { <span class="keywordflow">return</span> value_; }</div>
<div class="line"><a id="l01753" name="l01753"></a><span class="lineno"> 1753</span> </div>
<div class="line"><a id="l01758" name="l01758"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1message.html#a856a7186fd697a92b2a6699a448ffc45"> 1758</a></span>  <span class="keyword">constexpr</span> nvtxMessageType_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1message.html#a856a7186fd697a92b2a6699a448ffc45">get_type</a>() const noexcept { <span class="keywordflow">return</span> type_; }</div>
<div class="line"><a id="l01759" name="l01759"></a><span class="lineno"> 1759</span> </div>
<div class="line"><a id="l01760" name="l01760"></a><span class="lineno"> 1760</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01761" name="l01761"></a><span class="lineno"> 1761</span>  nvtxMessageType_t type_{};    </div>
<div class="line"><a id="l01762" name="l01762"></a><span class="lineno"> 1762</span>  nvtxMessageValue_t value_{};  </div>
<div class="line"><a id="l01763" name="l01763"></a><span class="lineno"> 1763</span>};</div>
</div>
<div class="line"><a id="l01764" name="l01764"></a><span class="lineno"> 1764</span> </div>
<div class="foldopen" id="foldopen01781" data-start="{" data-end="};">
<div class="line"><a id="l01781" name="l01781"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html"> 1781</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1payload.html">payload</a> {</div>
<div class="line"><a id="l01782" name="l01782"></a><span class="lineno"> 1782</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01783" name="l01783"></a><span class="lineno"> 1783</span>  <span class="keyword">using </span>value_type = <span class="keyword">typename</span> nvtxEventAttributes_v2::payload_t;</div>
<div class="line"><a id="l01784" name="l01784"></a><span class="lineno"> 1784</span> </div>
<div class="foldopen" id="foldopen01790" data-start="{" data-end="}">
<div class="line"><a id="l01790" name="l01790"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a4eb0c1e4256db34fa68779a67d26e4ef"> 1790</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a4eb0c1e4256db34fa68779a67d26e4ef">payload</a>(int64_t value) noexcept</div>
<div class="line"><a id="l01791" name="l01791"></a><span class="lineno"> 1791</span>    : type_{NVTX_PAYLOAD_TYPE_INT64}, value_{}</div>
<div class="line"><a id="l01792" name="l01792"></a><span class="lineno"> 1792</span>  {</div>
<div class="line"><a id="l01793" name="l01793"></a><span class="lineno"> 1793</span>    value_.llValue = value;</div>
<div class="line"><a id="l01794" name="l01794"></a><span class="lineno"> 1794</span>  }</div>
</div>
<div class="line"><a id="l01795" name="l01795"></a><span class="lineno"> 1795</span> </div>
<div class="foldopen" id="foldopen01801" data-start="{" data-end="}">
<div class="line"><a id="l01801" name="l01801"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a0351f31362bee4c7222bfa830dc46adf"> 1801</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a0351f31362bee4c7222bfa830dc46adf">payload</a>(int32_t value) noexcept</div>
<div class="line"><a id="l01802" name="l01802"></a><span class="lineno"> 1802</span>    : type_{NVTX_PAYLOAD_TYPE_INT32}, value_{}</div>
<div class="line"><a id="l01803" name="l01803"></a><span class="lineno"> 1803</span>  {</div>
<div class="line"><a id="l01804" name="l01804"></a><span class="lineno"> 1804</span>    value_.iValue = value;</div>
<div class="line"><a id="l01805" name="l01805"></a><span class="lineno"> 1805</span>  }</div>
</div>
<div class="line"><a id="l01806" name="l01806"></a><span class="lineno"> 1806</span> </div>
<div class="foldopen" id="foldopen01812" data-start="{" data-end="}">
<div class="line"><a id="l01812" name="l01812"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#afae6410eb17c40079fec46cfa6472ca8"> 1812</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#afae6410eb17c40079fec46cfa6472ca8">payload</a>(uint64_t value) noexcept</div>
<div class="line"><a id="l01813" name="l01813"></a><span class="lineno"> 1813</span>    : type_{NVTX_PAYLOAD_TYPE_UNSIGNED_INT64}, value_{}</div>
<div class="line"><a id="l01814" name="l01814"></a><span class="lineno"> 1814</span>  {</div>
<div class="line"><a id="l01815" name="l01815"></a><span class="lineno"> 1815</span>    value_.ullValue = value;</div>
<div class="line"><a id="l01816" name="l01816"></a><span class="lineno"> 1816</span>  }</div>
</div>
<div class="line"><a id="l01817" name="l01817"></a><span class="lineno"> 1817</span> </div>
<div class="foldopen" id="foldopen01823" data-start="{" data-end="}">
<div class="line"><a id="l01823" name="l01823"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a3755fd622f2552519d77f83d2f41950d"> 1823</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a3755fd622f2552519d77f83d2f41950d">payload</a>(uint32_t value) noexcept</div>
<div class="line"><a id="l01824" name="l01824"></a><span class="lineno"> 1824</span>    : type_{NVTX_PAYLOAD_TYPE_UNSIGNED_INT32}, value_{}</div>
<div class="line"><a id="l01825" name="l01825"></a><span class="lineno"> 1825</span>  {</div>
<div class="line"><a id="l01826" name="l01826"></a><span class="lineno"> 1826</span>    value_.uiValue = value;</div>
<div class="line"><a id="l01827" name="l01827"></a><span class="lineno"> 1827</span>  }</div>
</div>
<div class="line"><a id="l01828" name="l01828"></a><span class="lineno"> 1828</span> </div>
<div class="foldopen" id="foldopen01835" data-start="{" data-end="}">
<div class="line"><a id="l01835" name="l01835"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a69cc4703669a5c973fcac94b998b1677"> 1835</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a69cc4703669a5c973fcac94b998b1677">payload</a>(<span class="keywordtype">float</span> value) noexcept</div>
<div class="line"><a id="l01836" name="l01836"></a><span class="lineno"> 1836</span>    : type_{NVTX_PAYLOAD_TYPE_FLOAT}, value_{}</div>
<div class="line"><a id="l01837" name="l01837"></a><span class="lineno"> 1837</span>  {</div>
<div class="line"><a id="l01838" name="l01838"></a><span class="lineno"> 1838</span>    value_.fValue = value;</div>
<div class="line"><a id="l01839" name="l01839"></a><span class="lineno"> 1839</span>  }</div>
</div>
<div class="line"><a id="l01840" name="l01840"></a><span class="lineno"> 1840</span> </div>
<div class="foldopen" id="foldopen01847" data-start="{" data-end="}">
<div class="line"><a id="l01847" name="l01847"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#ab2f4ae9a528d1ba77a99aa6a334123ed"> 1847</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#ab2f4ae9a528d1ba77a99aa6a334123ed">payload</a>(<span class="keywordtype">double</span> value) noexcept</div>
<div class="line"><a id="l01848" name="l01848"></a><span class="lineno"> 1848</span>    : type_{NVTX_PAYLOAD_TYPE_DOUBLE}, value_{}</div>
<div class="line"><a id="l01849" name="l01849"></a><span class="lineno"> 1849</span>  {</div>
<div class="line"><a id="l01850" name="l01850"></a><span class="lineno"> 1850</span>    value_.dValue = value;</div>
<div class="line"><a id="l01851" name="l01851"></a><span class="lineno"> 1851</span>  }</div>
</div>
<div class="line"><a id="l01852" name="l01852"></a><span class="lineno"> 1852</span> </div>
<div class="foldopen" id="foldopen01859" data-start="{" data-end="}">
<div class="line"><a id="l01859" name="l01859"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#a2c3609dc8a8e6ce0ddfda5e96113ea53"> 1859</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#a2c3609dc8a8e6ce0ddfda5e96113ea53">payload</a>(</div>
<div class="line"><a id="l01860" name="l01860"></a><span class="lineno"> 1860</span>    nvtxPayloadType_t <span class="keyword">const</span>&amp; type,</div>
<div class="line"><a id="l01861" name="l01861"></a><span class="lineno"> 1861</span>    value_type <span class="keyword">const</span>&amp; value) noexcept</div>
<div class="line"><a id="l01862" name="l01862"></a><span class="lineno"> 1862</span>    : type_{type}, value_(value)</div>
<div class="line"><a id="l01863" name="l01863"></a><span class="lineno"> 1863</span>  {</div>
<div class="line"><a id="l01864" name="l01864"></a><span class="lineno"> 1864</span>  }</div>
</div>
<div class="line"><a id="l01865" name="l01865"></a><span class="lineno"> 1865</span> </div>
<div class="line"><a id="l01870" name="l01870"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#abb1094dc4fa3abc332ed18133fb2164e"> 1870</a></span>  <span class="keyword">constexpr</span> value_type <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#abb1094dc4fa3abc332ed18133fb2164e">get_value</a>() const noexcept { <span class="keywordflow">return</span> value_; }</div>
<div class="line"><a id="l01871" name="l01871"></a><span class="lineno"> 1871</span> </div>
<div class="line"><a id="l01876" name="l01876"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1payload.html#aeb3c21614c98acab62d0007175093172"> 1876</a></span>  <span class="keyword">constexpr</span> nvtxPayloadType_t <a class="code hl_function" href="classnvtx3_1_1v1_1_1payload.html#aeb3c21614c98acab62d0007175093172">get_type</a>() const noexcept { <span class="keywordflow">return</span> type_; }</div>
<div class="line"><a id="l01877" name="l01877"></a><span class="lineno"> 1877</span> </div>
<div class="line"><a id="l01878" name="l01878"></a><span class="lineno"> 1878</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l01879" name="l01879"></a><span class="lineno"> 1879</span>  nvtxPayloadType_t type_;  </div>
<div class="line"><a id="l01880" name="l01880"></a><span class="lineno"> 1880</span>  value_type value_;        </div>
<div class="line"><a id="l01881" name="l01881"></a><span class="lineno"> 1881</span>};</div>
</div>
<div class="line"><a id="l01882" name="l01882"></a><span class="lineno"> 1882</span> </div>
<div class="foldopen" id="foldopen01941" data-start="{" data-end="};">
<div class="line"><a id="l01941" name="l01941"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html"> 1941</a></span><span class="keyword">class </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> {</div>
<div class="line"><a id="l01942" name="l01942"></a><span class="lineno"> 1942</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l01943" name="l01943"></a><span class="lineno"> 1943</span>  <span class="keyword">using </span>value_type = nvtxEventAttributes_t;</div>
<div class="line"><a id="l01944" name="l01944"></a><span class="lineno"> 1944</span> </div>
<div class="foldopen" id="foldopen01949" data-start="{" data-end="}">
<div class="line"><a id="l01949" name="l01949"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#af9b06fcd1d0bb4b8739009b3b00ef34d"> 1949</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#af9b06fcd1d0bb4b8739009b3b00ef34d">event_attributes</a>() noexcept</div>
<div class="line"><a id="l01950" name="l01950"></a><span class="lineno"> 1950</span>    : attributes_{</div>
<div class="line"><a id="l01951" name="l01951"></a><span class="lineno"> 1951</span>        NVTX_VERSION,                   <span class="comment">// version</span></div>
<div class="line"><a id="l01952" name="l01952"></a><span class="lineno"> 1952</span>        <span class="keyword">sizeof</span>(nvtxEventAttributes_t),  <span class="comment">// size</span></div>
<div class="line"><a id="l01953" name="l01953"></a><span class="lineno"> 1953</span>        0,                              <span class="comment">// category</span></div>
<div class="line"><a id="l01954" name="l01954"></a><span class="lineno"> 1954</span>        NVTX_COLOR_UNKNOWN,             <span class="comment">// color type</span></div>
<div class="line"><a id="l01955" name="l01955"></a><span class="lineno"> 1955</span>        0,                              <span class="comment">// color value</span></div>
<div class="line"><a id="l01956" name="l01956"></a><span class="lineno"> 1956</span>        NVTX_PAYLOAD_UNKNOWN,           <span class="comment">// payload type</span></div>
<div class="line"><a id="l01957" name="l01957"></a><span class="lineno"> 1957</span>        0,                              <span class="comment">// reserved 4B</span></div>
<div class="line"><a id="l01958" name="l01958"></a><span class="lineno"> 1958</span>        {0},                            <span class="comment">// payload value (union)</span></div>
<div class="line"><a id="l01959" name="l01959"></a><span class="lineno"> 1959</span>        NVTX_MESSAGE_UNKNOWN,           <span class="comment">// message type</span></div>
<div class="line"><a id="l01960" name="l01960"></a><span class="lineno"> 1960</span>        {0}                             <span class="comment">// message value (union)</span></div>
<div class="line"><a id="l01961" name="l01961"></a><span class="lineno"> 1961</span>      }</div>
<div class="line"><a id="l01962" name="l01962"></a><span class="lineno"> 1962</span>  {</div>
<div class="line"><a id="l01963" name="l01963"></a><span class="lineno"> 1963</span>  }</div>
</div>
<div class="line"><a id="l01964" name="l01964"></a><span class="lineno"> 1964</span> </div>
<div class="line"><a id="l01972" name="l01972"></a><span class="lineno"> 1972</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen01973" data-start="{" data-end="}">
<div class="line"><a id="l01973" name="l01973"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#a27ef8784b11bb620cd597ea55a781e02"> 1973</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#a27ef8784b11bb620cd597ea55a781e02">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1category.html">category</a> <span class="keyword">const</span>&amp; c, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l01974" name="l01974"></a><span class="lineno"> 1974</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l01975" name="l01975"></a><span class="lineno"> 1975</span>  {</div>
<div class="line"><a id="l01976" name="l01976"></a><span class="lineno"> 1976</span>    attributes_.category = c.get_id();</div>
<div class="line"><a id="l01977" name="l01977"></a><span class="lineno"> 1977</span>  }</div>
</div>
<div class="line"><a id="l01978" name="l01978"></a><span class="lineno"> 1978</span> </div>
<div class="line"><a id="l01986" name="l01986"></a><span class="lineno"> 1986</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen01987" data-start="{" data-end="}">
<div class="line"><a id="l01987" name="l01987"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#a14e581407cea05235f0f814f4043c656"> 1987</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#a14e581407cea05235f0f814f4043c656">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1color.html">color</a> <span class="keyword">const</span>&amp; c, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l01988" name="l01988"></a><span class="lineno"> 1988</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l01989" name="l01989"></a><span class="lineno"> 1989</span>  {</div>
<div class="line"><a id="l01990" name="l01990"></a><span class="lineno"> 1990</span>    attributes_.color     = c.get_value();</div>
<div class="line"><a id="l01991" name="l01991"></a><span class="lineno"> 1991</span>    attributes_.colorType = c.get_type();</div>
<div class="line"><a id="l01992" name="l01992"></a><span class="lineno"> 1992</span>  }</div>
</div>
<div class="line"><a id="l01993" name="l01993"></a><span class="lineno"> 1993</span> </div>
<div class="line"><a id="l02001" name="l02001"></a><span class="lineno"> 2001</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02002" data-start="{" data-end="}">
<div class="line"><a id="l02002" name="l02002"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#ac16fc2b8249f503ff89ee14a9fdb63fd"> 2002</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#ac16fc2b8249f503ff89ee14a9fdb63fd">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1payload.html">payload</a> <span class="keyword">const</span>&amp; p, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02003" name="l02003"></a><span class="lineno"> 2003</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l02004" name="l02004"></a><span class="lineno"> 2004</span>  {</div>
<div class="line"><a id="l02005" name="l02005"></a><span class="lineno"> 2005</span>    attributes_.payload     = p.get_value();</div>
<div class="line"><a id="l02006" name="l02006"></a><span class="lineno"> 2006</span>    attributes_.payloadType = p.get_type();</div>
<div class="line"><a id="l02007" name="l02007"></a><span class="lineno"> 2007</span>  }</div>
</div>
<div class="line"><a id="l02008" name="l02008"></a><span class="lineno"> 2008</span> </div>
<div class="line"><a id="l02016" name="l02016"></a><span class="lineno"> 2016</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02017" data-start="{" data-end="}">
<div class="line"><a id="l02017" name="l02017"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#acccdd768a4fbe2234d151e8a8443f44f"> 2017</a></span>  NVTX3_CONSTEXPR_IF_CPP14 <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#acccdd768a4fbe2234d151e8a8443f44f">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1message.html">message</a> <span class="keyword">const</span>&amp; m, Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02018" name="l02018"></a><span class="lineno"> 2018</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(args...)</div>
<div class="line"><a id="l02019" name="l02019"></a><span class="lineno"> 2019</span>  {</div>
<div class="line"><a id="l02020" name="l02020"></a><span class="lineno"> 2020</span>    attributes_.message     = m.get_value();</div>
<div class="line"><a id="l02021" name="l02021"></a><span class="lineno"> 2021</span>    attributes_.messageType = m.get_type();</div>
<div class="line"><a id="l02022" name="l02022"></a><span class="lineno"> 2022</span>  }</div>
</div>
<div class="line"><a id="l02023" name="l02023"></a><span class="lineno"> 2023</span> </div>
<div class="line"><a id="l02024" name="l02024"></a><span class="lineno"> 2024</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">~event_attributes</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02025" name="l02025"></a><span class="lineno"> 2025</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02026" name="l02026"></a><span class="lineno"> 2026</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02027" name="l02027"></a><span class="lineno"> 2027</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02028" name="l02028"></a><span class="lineno"> 2028</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>&amp;&amp;) = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02029" name="l02029"></a><span class="lineno"> 2029</span> </div>
<div class="line"><a id="l02034" name="l02034"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c"> 2034</a></span>  <span class="keyword">constexpr</span> value_type <span class="keyword">const</span>* <a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c">get</a>() const noexcept { <span class="keywordflow">return</span> &amp;attributes_; }</div>
<div class="line"><a id="l02035" name="l02035"></a><span class="lineno"> 2035</span> </div>
<div class="line"><a id="l02036" name="l02036"></a><span class="lineno"> 2036</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l02037" name="l02037"></a><span class="lineno"> 2037</span>  value_type attributes_{};  </div>
<div class="line"><a id="l02038" name="l02038"></a><span class="lineno"> 2038</span>};</div>
</div>
<div class="line"><a id="l02039" name="l02039"></a><span class="lineno"> 2039</span> </div>
<div class="line"><a id="l02087" name="l02087"></a><span class="lineno"> 2087</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen02088" data-start="{" data-end="};">
<div class="line"><a id="l02088" name="l02088"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html"> 2088</a></span><span class="keyword">class </span>NVTX3_MAYBE_UNUSED <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a> {</div>
<div class="line"><a id="l02089" name="l02089"></a><span class="lineno"> 2089</span> <span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen02104" data-start="{" data-end="}">
<div class="line"><a id="l02104" name="l02104"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a25eff24202b7021ced3481b29c1768c8"> 2104</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a25eff24202b7021ced3481b29c1768c8">scoped_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02105" name="l02105"></a><span class="lineno"> 2105</span>  {</div>
<div class="line"><a id="l02106" name="l02106"></a><span class="lineno"> 2106</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02107" name="l02107"></a><span class="lineno"> 2107</span>    nvtxDomainRangePushEx(domain::get&lt;D&gt;(), attr.get());</div>
<div class="line"><a id="l02108" name="l02108"></a><span class="lineno"> 2108</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02109" name="l02109"></a><span class="lineno"> 2109</span>    (void)attr;</div>
<div class="line"><a id="l02110" name="l02110"></a><span class="lineno"> 2110</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02111" name="l02111"></a><span class="lineno"> 2111</span>  }</div>
</div>
<div class="line"><a id="l02112" name="l02112"></a><span class="lineno"> 2112</span> </div>
<div class="line"><a id="l02133" name="l02133"></a><span class="lineno"> 2133</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02134" data-start="{" data-end="}">
<div class="line"><a id="l02134" name="l02134"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a53b3c3d95b29dfc31db2df290804df65"> 2134</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a53b3c3d95b29dfc31db2df290804df65">scoped_range_in</a>(Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02135" name="l02135"></a><span class="lineno"> 2135</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...}}</div>
<div class="line"><a id="l02136" name="l02136"></a><span class="lineno"> 2136</span>  {</div>
<div class="line"><a id="l02137" name="l02137"></a><span class="lineno"> 2137</span>  }</div>
</div>
<div class="line"><a id="l02138" name="l02138"></a><span class="lineno"> 2138</span> </div>
<div class="line"><a id="l02144" name="l02144"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a72417f5a5f0ecf2b67551880bdd28955"> 2144</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#a72417f5a5f0ecf2b67551880bdd28955">scoped_range_in</a>() noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{}} {}</div>
<div class="line"><a id="l02145" name="l02145"></a><span class="lineno"> 2145</span> </div>
<div class="line"><a id="l02152" name="l02152"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#aaa2e0c47375a578c7f772501905b8d22"> 2152</a></span>  <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(std::size_t) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02153" name="l02153"></a><span class="lineno"> 2153</span> </div>
<div class="line"><a id="l02154" name="l02154"></a><span class="lineno"> 2154</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02155" name="l02155"></a><span class="lineno"> 2155</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a> <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02156" name="l02156"></a><span class="lineno"> 2156</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02157" name="l02157"></a><span class="lineno"> 2157</span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in</a>&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02158" name="l02158"></a><span class="lineno"> 2158</span> </div>
<div class="foldopen" id="foldopen02162" data-start="{" data-end="}">
<div class="line"><a id="l02162" name="l02162"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1scoped__range__in.html#aebf31fd1548c4bf5196332db9ee90fb1"> 2162</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1scoped__range__in.html#aebf31fd1548c4bf5196332db9ee90fb1">~scoped_range_in</a>() noexcept</div>
<div class="line"><a id="l02163" name="l02163"></a><span class="lineno"> 2163</span>  {</div>
<div class="line"><a id="l02164" name="l02164"></a><span class="lineno"> 2164</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02165" name="l02165"></a><span class="lineno"> 2165</span>    nvtxDomainRangePop(domain::get&lt;D&gt;());</div>
<div class="line"><a id="l02166" name="l02166"></a><span class="lineno"> 2166</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02167" name="l02167"></a><span class="lineno"> 2167</span>  }</div>
</div>
<div class="line"><a id="l02168" name="l02168"></a><span class="lineno"> 2168</span>};</div>
</div>
<div class="line"><a id="l02169" name="l02169"></a><span class="lineno"> 2169</span> </div>
<div class="line"><a id="l02174" name="l02174"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a8e124f3d438e512b586415f1ac2b9677"> 2174</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1scoped__range__in.html">scoped_range_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l02175" name="l02175"></a><span class="lineno"> 2175</span> </div>
<div class="line"><a id="l02176" name="l02176"></a><span class="lineno"> 2176</span><span class="keyword">namespace </span>detail {</div>
<div class="line"><a id="l02177" name="l02177"></a><span class="lineno"> 2177</span> </div>
<div class="line"><a id="l02179" name="l02179"></a><span class="lineno"> 2179</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="line"><a id="l02180" name="l02180"></a><span class="lineno"> 2180</span><span class="keyword">class </span>NVTX3_MAYBE_UNUSED optional_scoped_range_in</div>
<div class="line"><a id="l02181" name="l02181"></a><span class="lineno"> 2181</span>{</div>
<div class="line"><a id="l02182" name="l02182"></a><span class="lineno"> 2182</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l02183" name="l02183"></a><span class="lineno"> 2183</span>  optional_scoped_range_in() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l02184" name="l02184"></a><span class="lineno"> 2184</span> </div>
<div class="line"><a id="l02185" name="l02185"></a><span class="lineno"> 2185</span>  <span class="keywordtype">void</span> begin(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02186" name="l02186"></a><span class="lineno"> 2186</span>  {</div>
<div class="line"><a id="l02187" name="l02187"></a><span class="lineno"> 2187</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02188" name="l02188"></a><span class="lineno"> 2188</span>    <span class="comment">// This class is not meant to be part of the public NVTX C++ API and should</span></div>
<div class="line"><a id="l02189" name="l02189"></a><span class="lineno"> 2189</span>    <span class="comment">// only be used in the `NVTX3_FUNC_RANGE_IF` and `NVTX3_FUNC_RANGE_IF_IN`</span></div>
<div class="line"><a id="l02190" name="l02190"></a><span class="lineno"> 2190</span>    <span class="comment">// macros. However, to prevent developers from misusing this class, make</span></div>
<div class="line"><a id="l02191" name="l02191"></a><span class="lineno"> 2191</span>    <span class="comment">// sure to not start multiple ranges.</span></div>
<div class="line"><a id="l02192" name="l02192"></a><span class="lineno"> 2192</span>    <span class="keywordflow">if</span> (initialized) { <span class="keywordflow">return</span>; }</div>
<div class="line"><a id="l02193" name="l02193"></a><span class="lineno"> 2193</span> </div>
<div class="line"><a id="l02194" name="l02194"></a><span class="lineno"> 2194</span>    nvtxDomainRangePushEx(domain::get&lt;D&gt;(), attr.<a class="code hl_function" href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c">get</a>());</div>
<div class="line"><a id="l02195" name="l02195"></a><span class="lineno"> 2195</span>    initialized = <span class="keyword">true</span>;</div>
<div class="line"><a id="l02196" name="l02196"></a><span class="lineno"> 2196</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02197" name="l02197"></a><span class="lineno"> 2197</span>  }</div>
<div class="line"><a id="l02198" name="l02198"></a><span class="lineno"> 2198</span> </div>
<div class="line"><a id="l02199" name="l02199"></a><span class="lineno"> 2199</span>  ~optional_scoped_range_in() <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02200" name="l02200"></a><span class="lineno"> 2200</span>  {</div>
<div class="line"><a id="l02201" name="l02201"></a><span class="lineno"> 2201</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02202" name="l02202"></a><span class="lineno"> 2202</span>    <span class="keywordflow">if</span> (initialized) { nvtxDomainRangePop(domain::get&lt;D&gt;()); }</div>
<div class="line"><a id="l02203" name="l02203"></a><span class="lineno"> 2203</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02204" name="l02204"></a><span class="lineno"> 2204</span>  }</div>
<div class="line"><a id="l02205" name="l02205"></a><span class="lineno"> 2205</span> </div>
<div class="line"><a id="l02206" name="l02206"></a><span class="lineno"> 2206</span>  <span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(std::size_t) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02207" name="l02207"></a><span class="lineno"> 2207</span>  optional_scoped_range_in(optional_scoped_range_in <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02208" name="l02208"></a><span class="lineno"> 2208</span>  optional_scoped_range_in&amp; operator=(optional_scoped_range_in <span class="keyword">const</span>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02209" name="l02209"></a><span class="lineno"> 2209</span>  optional_scoped_range_in(optional_scoped_range_in&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02210" name="l02210"></a><span class="lineno"> 2210</span>  optional_scoped_range_in&amp; operator=(optional_scoped_range_in&amp;&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l02211" name="l02211"></a><span class="lineno"> 2211</span> </div>
<div class="line"><a id="l02212" name="l02212"></a><span class="lineno"> 2212</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l02213" name="l02213"></a><span class="lineno"> 2213</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02214" name="l02214"></a><span class="lineno"> 2214</span>  <span class="keywordtype">bool</span> initialized = <span class="keyword">false</span>;</div>
<div class="line"><a id="l02215" name="l02215"></a><span class="lineno"> 2215</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02216" name="l02216"></a><span class="lineno"> 2216</span>};</div>
<div class="line"><a id="l02218" name="l02218"></a><span class="lineno"> 2218</span> </div>
<div class="line"><a id="l02219" name="l02219"></a><span class="lineno"> 2219</span>} <span class="comment">// namespace detail</span></div>
<div class="line"><a id="l02220" name="l02220"></a><span class="lineno"> 2220</span> </div>
<div class="foldopen" id="foldopen02227" data-start="{" data-end="};">
<div class="line"><a id="l02227" name="l02227"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html"> 2227</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> {</div>
<div class="line"><a id="l02229" name="l02229"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109"> 2229</a></span>  <span class="keyword">using </span><a class="code hl_typedef" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">value_type</a> = nvtxRangeId_t;</div>
<div class="line"><a id="l02230" name="l02230"></a><span class="lineno"> 2230</span> </div>
<div class="line"><a id="l02231" name="l02231"></a><span class="lineno"> 2231</span> </div>
<div class="line"><a id="l02236" name="l02236"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a268da1820c8b8c63210123f0eca23b4d"> 2236</a></span>  <span class="keyword">constexpr</span> <span class="keyword">explicit</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#a268da1820c8b8c63210123f0eca23b4d">range_handle</a>(<a class="code hl_typedef" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">value_type</a> <span class="keywordtype">id</span>) noexcept : _range_id{<span class="keywordtype">id</span>} {}</div>
<div class="line"><a id="l02237" name="l02237"></a><span class="lineno"> 2237</span> </div>
<div class="line"><a id="l02245" name="l02245"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a5d0f33132aa6782d681656040dd6ce7f"> 2245</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#a5d0f33132aa6782d681656040dd6ce7f">range_handle</a>() noexcept = default;</div>
<div class="line"><a id="l02246" name="l02246"></a><span class="lineno"> 2246</span> </div>
<div class="line"><a id="l02258" name="l02258"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#ab622758fb9654b36c018b0c9aa91679a"> 2258</a></span>  constexpr explicit operator <span class="keywordtype">bool</span>() const noexcept { <span class="keywordflow">return</span> get_value() != null_range_id; }</div>
<div class="line"><a id="l02259" name="l02259"></a><span class="lineno"> 2259</span> </div>
<div class="line"><a id="l02266" name="l02266"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#acaef1aa87e8c7ce936b0e93040b8ad3a"> 2266</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#acaef1aa87e8c7ce936b0e93040b8ad3a">range_handle</a>(std::nullptr_t) <span class="keyword">noexcept</span> {}</div>
<div class="line"><a id="l02267" name="l02267"></a><span class="lineno"> 2267</span> </div>
<div class="line"><a id="l02273" name="l02273"></a><span class="lineno"><a class="line" href="structnvtx3_1_1v1_1_1range__handle.html#a3919493cff16228eed36c9a3c3f84de6"> 2273</a></span>  <span class="keyword">constexpr</span> <a class="code hl_typedef" href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">value_type</a> <a class="code hl_function" href="structnvtx3_1_1v1_1_1range__handle.html#a3919493cff16228eed36c9a3c3f84de6">get_value</a>() const noexcept { <span class="keywordflow">return</span> _range_id; }</div>
<div class="line"><a id="l02274" name="l02274"></a><span class="lineno"> 2274</span> </div>
<div class="line"><a id="l02275" name="l02275"></a><span class="lineno"> 2275</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l02277" name="l02277"></a><span class="lineno"> 2277</span>  <span class="keyword">static</span> <span class="keyword">constexpr</span> value_type null_range_id = nvtxRangeId_t{0};</div>
<div class="line"><a id="l02278" name="l02278"></a><span class="lineno"> 2278</span> </div>
<div class="line"><a id="l02279" name="l02279"></a><span class="lineno"> 2279</span>  value_type _range_id{null_range_id};  </div>
<div class="line"><a id="l02280" name="l02280"></a><span class="lineno"> 2280</span>};</div>
</div>
<div class="line"><a id="l02281" name="l02281"></a><span class="lineno"> 2281</span> </div>
<div class="foldopen" id="foldopen02288" data-start="{" data-end="}">
<div class="line"><a id="l02288" name="l02288"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aa2016d0df543887a838402751356433d"> 2288</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="nvtx3_8hpp.html#aa2016d0df543887a838402751356433d">operator==</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> lhs, <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> rhs) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02289" name="l02289"></a><span class="lineno"> 2289</span>{</div>
<div class="line"><a id="l02290" name="l02290"></a><span class="lineno"> 2290</span>  <span class="keywordflow">return</span> lhs.get_value() == rhs.get_value();</div>
<div class="line"><a id="l02291" name="l02291"></a><span class="lineno"> 2291</span>}</div>
</div>
<div class="line"><a id="l02292" name="l02292"></a><span class="lineno"> 2292</span> </div>
<div class="line"><a id="l02299" name="l02299"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aaaae235fe6980a2ac95eb4f35d6e9ad1"> 2299</a></span><span class="keyword">inline</span> <span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="nvtx3_8hpp.html#aaaae235fe6980a2ac95eb4f35d6e9ad1">operator!=</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> lhs, <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> rhs) <span class="keyword">noexcept</span> { <span class="keywordflow">return</span> !(lhs == rhs); }</div>
<div class="line"><a id="l02300" name="l02300"></a><span class="lineno"> 2300</span> </div>
<div class="line"><a id="l02330" name="l02330"></a><span class="lineno"> 2330</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen02331" data-start="{" data-end="}">
<div class="line"><a id="l02331" name="l02331"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23"> 2331</a></span>NVTX3_NO_DISCARD <span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23">start_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02332" name="l02332"></a><span class="lineno"> 2332</span>{</div>
<div class="line"><a id="l02333" name="l02333"></a><span class="lineno"> 2333</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02334" name="l02334"></a><span class="lineno"> 2334</span>  <span class="keywordflow">return</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a>{nvtxDomainRangeStartEx(domain::get&lt;D&gt;(), attr.get())};</div>
<div class="line"><a id="l02335" name="l02335"></a><span class="lineno"> 2335</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02336" name="l02336"></a><span class="lineno"> 2336</span>  (void)attr;</div>
<div class="line"><a id="l02337" name="l02337"></a><span class="lineno"> 2337</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02338" name="l02338"></a><span class="lineno"> 2338</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02339" name="l02339"></a><span class="lineno"> 2339</span>}</div>
</div>
<div class="line"><a id="l02340" name="l02340"></a><span class="lineno"> 2340</span> </div>
<div class="line"><a id="l02371" name="l02371"></a><span class="lineno"> 2371</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global, <span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02372" data-start="{" data-end="}">
<div class="line"><a id="l02372" name="l02372"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a277b16a1aadc6e8b40e720847b5fb124"> 2372</a></span>NVTX3_NO_DISCARD <span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23">start_range_in</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02373" name="l02373"></a><span class="lineno"> 2373</span>{</div>
<div class="line"><a id="l02374" name="l02374"></a><span class="lineno"> 2374</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02375" name="l02375"></a><span class="lineno"> 2375</span>  <span class="keywordflow">return</span> start_range_in&lt;D&gt;(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...});</div>
<div class="line"><a id="l02376" name="l02376"></a><span class="lineno"> 2376</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02377" name="l02377"></a><span class="lineno"> 2377</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02378" name="l02378"></a><span class="lineno"> 2378</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02379" name="l02379"></a><span class="lineno"> 2379</span>}</div>
</div>
<div class="line"><a id="l02380" name="l02380"></a><span class="lineno"> 2380</span> </div>
<div class="foldopen" id="foldopen02407" data-start="{" data-end="}">
<div class="line"><a id="l02407" name="l02407"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec"> 2407</a></span>NVTX3_NO_DISCARD <span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec">start_range</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02408" name="l02408"></a><span class="lineno"> 2408</span>{</div>
<div class="line"><a id="l02409" name="l02409"></a><span class="lineno"> 2409</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02410" name="l02410"></a><span class="lineno"> 2410</span>  <span class="keywordflow">return</span> start_range_in&lt;domain::global&gt;(attr);</div>
<div class="line"><a id="l02411" name="l02411"></a><span class="lineno"> 2411</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02412" name="l02412"></a><span class="lineno"> 2412</span>  (void)attr;</div>
<div class="line"><a id="l02413" name="l02413"></a><span class="lineno"> 2413</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02414" name="l02414"></a><span class="lineno"> 2414</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02415" name="l02415"></a><span class="lineno"> 2415</span>}</div>
</div>
<div class="line"><a id="l02416" name="l02416"></a><span class="lineno"> 2416</span> </div>
<div class="line"><a id="l02444" name="l02444"></a><span class="lineno"> 2444</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02445" data-start="{" data-end="}">
<div class="line"><a id="l02445" name="l02445"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a7484c890617a91bbbb998b793b59584e"> 2445</a></span>NVTX3_NO_DISCARD <span class="keyword">inline</span> <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> <a class="code hl_function" href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec">start_range</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02446" name="l02446"></a><span class="lineno"> 2446</span>{</div>
<div class="line"><a id="l02447" name="l02447"></a><span class="lineno"> 2447</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02448" name="l02448"></a><span class="lineno"> 2448</span>  <span class="keywordflow">return</span> start_range_in&lt;domain::global&gt;(args...);</div>
<div class="line"><a id="l02449" name="l02449"></a><span class="lineno"> 2449</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02450" name="l02450"></a><span class="lineno"> 2450</span>  <span class="keywordflow">return</span> {};</div>
<div class="line"><a id="l02451" name="l02451"></a><span class="lineno"> 2451</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02452" name="l02452"></a><span class="lineno"> 2452</span>}</div>
</div>
<div class="line"><a id="l02453" name="l02453"></a><span class="lineno"> 2453</span> </div>
<div class="line"><a id="l02469" name="l02469"></a><span class="lineno"> 2469</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen02470" data-start="{" data-end="}">
<div class="line"><a id="l02470" name="l02470"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a0ef24a4252e5cc6267766410a03dcebb"> 2470</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#a0ef24a4252e5cc6267766410a03dcebb">end_range_in</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> r) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02471" name="l02471"></a><span class="lineno"> 2471</span>{</div>
<div class="line"><a id="l02472" name="l02472"></a><span class="lineno"> 2472</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02473" name="l02473"></a><span class="lineno"> 2473</span>  nvtxDomainRangeEnd(domain::get&lt;D&gt;(), r.get_value());</div>
<div class="line"><a id="l02474" name="l02474"></a><span class="lineno"> 2474</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02475" name="l02475"></a><span class="lineno"> 2475</span>  (void)r;</div>
<div class="line"><a id="l02476" name="l02476"></a><span class="lineno"> 2476</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02477" name="l02477"></a><span class="lineno"> 2477</span>}</div>
</div>
<div class="line"><a id="l02478" name="l02478"></a><span class="lineno"> 2478</span> </div>
<div class="foldopen" id="foldopen02492" data-start="{" data-end="}">
<div class="line"><a id="l02492" name="l02492"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aec1adbeb9e44752027d2ede89f1f0dba"> 2492</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#aec1adbeb9e44752027d2ede89f1f0dba">end_range</a>(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> r) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02493" name="l02493"></a><span class="lineno"> 2493</span>{</div>
<div class="line"><a id="l02494" name="l02494"></a><span class="lineno"> 2494</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02495" name="l02495"></a><span class="lineno"> 2495</span>  end_range_in&lt;domain::global&gt;(r);</div>
<div class="line"><a id="l02496" name="l02496"></a><span class="lineno"> 2496</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02497" name="l02497"></a><span class="lineno"> 2497</span>  (void)r;</div>
<div class="line"><a id="l02498" name="l02498"></a><span class="lineno"> 2498</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02499" name="l02499"></a><span class="lineno"> 2499</span>}</div>
</div>
<div class="line"><a id="l02500" name="l02500"></a><span class="lineno"> 2500</span> </div>
<div class="line"><a id="l02522" name="l02522"></a><span class="lineno"> 2522</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen02523" data-start="{" data-end="};">
<div class="line"><a id="l02523" name="l02523"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html"> 2523</a></span><span class="keyword">class </span>NVTX3_MAYBE_UNUSED <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a> {</div>
<div class="line"><a id="l02524" name="l02524"></a><span class="lineno"> 2524</span> <span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen02538" data-start="{" data-end="}">
<div class="line"><a id="l02538" name="l02538"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#adcf350963f4c071aed55c6c7315847d1"> 2538</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#adcf350963f4c071aed55c6c7315847d1">unique_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) noexcept</div>
<div class="line"><a id="l02539" name="l02539"></a><span class="lineno"> 2539</span>    : handle_{start_range_in&lt;D&gt;(attr)}</div>
<div class="line"><a id="l02540" name="l02540"></a><span class="lineno"> 2540</span>  {</div>
<div class="line"><a id="l02541" name="l02541"></a><span class="lineno"> 2541</span>  }</div>
</div>
<div class="line"><a id="l02542" name="l02542"></a><span class="lineno"> 2542</span> </div>
<div class="line"><a id="l02562" name="l02562"></a><span class="lineno"> 2562</span>  <span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02563" data-start="{" data-end="}">
<div class="line"><a id="l02563" name="l02563"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#aaf57515e4b226d0b114ab5fc54f51ee3"> 2563</a></span>  <span class="keyword">explicit</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#aaf57515e4b226d0b114ab5fc54f51ee3">unique_range_in</a>(Args <span class="keyword">const</span>&amp;... args) noexcept</div>
<div class="line"><a id="l02564" name="l02564"></a><span class="lineno"> 2564</span>    : <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...}}</div>
<div class="line"><a id="l02565" name="l02565"></a><span class="lineno"> 2565</span>  {</div>
<div class="line"><a id="l02566" name="l02566"></a><span class="lineno"> 2566</span>  }</div>
</div>
<div class="line"><a id="l02567" name="l02567"></a><span class="lineno"> 2567</span> </div>
<div class="line"><a id="l02573" name="l02573"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a252eabd84e3eaf7ac788446048652c93"> 2573</a></span>  <span class="keyword">constexpr</span> <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#a252eabd84e3eaf7ac788446048652c93">unique_range_in</a>() noexcept : <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>{<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{}} {}</div>
<div class="line"><a id="l02574" name="l02574"></a><span class="lineno"> 2574</span> </div>
<div class="line"><a id="l02579" name="l02579"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a931bde31ac0aeb60e8f3050a29c60f83"> 2579</a></span>  <a class="code hl_function" href="classnvtx3_1_1v1_1_1unique__range__in.html#a931bde31ac0aeb60e8f3050a29c60f83">~unique_range_in</a>() noexcept = default;</div>
<div class="line"><a id="l02580" name="l02580"></a><span class="lineno"> 2580</span> </div>
<div class="line"><a id="l02587" name="l02587"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a0c58843cc9a553f0837fe0e46799006b"> 2587</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp;&amp; other) noexcept = default;</div>
<div class="line"><a id="l02588" name="l02588"></a><span class="lineno"> 2588</span> </div>
<div class="line"><a id="l02595" name="l02595"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#ac898edbc15c5426c6095c6a53f27951f"> 2595</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp;&amp; other) noexcept = default;</div>
<div class="line"><a id="l02596" name="l02596"></a><span class="lineno"> 2596</span> </div>
<div class="line"><a id="l02599" name="l02599"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a6fffabbfcb1e245bf74e025628b6e67e"> 2599</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a> const&amp;) = delete;</div>
<div class="line"><a id="l02600" name="l02600"></a><span class="lineno"> 2600</span> </div>
<div class="line"><a id="l02603" name="l02603"></a><span class="lineno"><a class="line" href="classnvtx3_1_1v1_1_1unique__range__in.html#a22402183d4e9db06a6b6a00e9218fcab"> 2603</a></span>  <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a>&amp; operator=(<a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in</a> const&amp;) = delete;</div>
<div class="line"><a id="l02604" name="l02604"></a><span class="lineno"> 2604</span> </div>
<div class="line"><a id="l02605" name="l02605"></a><span class="lineno"> 2605</span> private:</div>
<div class="line"><a id="l02606" name="l02606"></a><span class="lineno"> 2606</span> </div>
<div class="line"><a id="l02607" name="l02607"></a><span class="lineno"> 2607</span>  struct end_range_handle {</div>
<div class="line"><a id="l02608" name="l02608"></a><span class="lineno"> 2608</span>    <span class="keyword">using </span>pointer = <a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a>;  </div>
<div class="line"><a id="l02609" name="l02609"></a><span class="lineno"> 2609</span>    <span class="keywordtype">void</span> operator()(<a class="code hl_struct" href="structnvtx3_1_1v1_1_1range__handle.html">range_handle</a> h) <span class="keyword">const</span> <span class="keyword">noexcept</span> { end_range_in&lt;D&gt;(h); }</div>
<div class="line"><a id="l02610" name="l02610"></a><span class="lineno"> 2610</span>  };</div>
<div class="line"><a id="l02611" name="l02611"></a><span class="lineno"> 2611</span> </div>
<div class="line"><a id="l02613" name="l02613"></a><span class="lineno"> 2613</span>  std::unique_ptr&lt;range_handle, end_range_handle&gt; handle_;</div>
<div class="line"><a id="l02614" name="l02614"></a><span class="lineno"> 2614</span>};</div>
</div>
<div class="line"><a id="l02615" name="l02615"></a><span class="lineno"> 2615</span> </div>
<div class="line"><a id="l02620" name="l02620"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a14d623348b01d05981c7ea644fd7976c"> 2620</a></span><span class="keyword">using </span><a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range</a> = <a class="code hl_class" href="classnvtx3_1_1v1_1_1unique__range__in.html">unique_range_in&lt;domain::global&gt;</a>;</div>
<div class="line"><a id="l02621" name="l02621"></a><span class="lineno"> 2621</span> </div>
<div class="line"><a id="l02645" name="l02645"></a><span class="lineno"> 2645</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global&gt;</div>
<div class="foldopen" id="foldopen02646" data-start="{" data-end="}">
<div class="line"><a id="l02646" name="l02646"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228"> 2646</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228">mark_in</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02647" name="l02647"></a><span class="lineno"> 2647</span>{</div>
<div class="line"><a id="l02648" name="l02648"></a><span class="lineno"> 2648</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02649" name="l02649"></a><span class="lineno"> 2649</span>  nvtxDomainMarkEx(domain::get&lt;D&gt;(), attr.get());</div>
<div class="line"><a id="l02650" name="l02650"></a><span class="lineno"> 2650</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02651" name="l02651"></a><span class="lineno"> 2651</span>  (void)(attr);</div>
<div class="line"><a id="l02652" name="l02652"></a><span class="lineno"> 2652</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02653" name="l02653"></a><span class="lineno"> 2653</span>}</div>
</div>
<div class="line"><a id="l02654" name="l02654"></a><span class="lineno"> 2654</span> </div>
<div class="line"><a id="l02682" name="l02682"></a><span class="lineno"> 2682</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> D = domain::global, <span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02683" data-start="{" data-end="}">
<div class="line"><a id="l02683" name="l02683"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a82d22c4437222a9bf0c5ae0475aaea7a"> 2683</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228">mark_in</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02684" name="l02684"></a><span class="lineno"> 2684</span>{</div>
<div class="line"><a id="l02685" name="l02685"></a><span class="lineno"> 2685</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02686" name="l02686"></a><span class="lineno"> 2686</span>  mark_in&lt;D&gt;(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a>{args...});</div>
<div class="line"><a id="l02687" name="l02687"></a><span class="lineno"> 2687</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02688" name="l02688"></a><span class="lineno"> 2688</span>}</div>
</div>
<div class="line"><a id="l02689" name="l02689"></a><span class="lineno"> 2689</span> </div>
<div class="foldopen" id="foldopen02710" data-start="{" data-end="}">
<div class="line"><a id="l02710" name="l02710"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651"> 2710</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651">mark</a>(<a class="code hl_class" href="classnvtx3_1_1v1_1_1event__attributes.html">event_attributes</a> <span class="keyword">const</span>&amp; attr) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02711" name="l02711"></a><span class="lineno"> 2711</span>{</div>
<div class="line"><a id="l02712" name="l02712"></a><span class="lineno"> 2712</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02713" name="l02713"></a><span class="lineno"> 2713</span>  mark_in&lt;domain::global&gt;(attr);</div>
<div class="line"><a id="l02714" name="l02714"></a><span class="lineno"> 2714</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02715" name="l02715"></a><span class="lineno"> 2715</span>}</div>
</div>
<div class="line"><a id="l02716" name="l02716"></a><span class="lineno"> 2716</span> </div>
<div class="line"><a id="l02741" name="l02741"></a><span class="lineno"> 2741</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... Args&gt;</div>
<div class="foldopen" id="foldopen02742" data-start="{" data-end="}">
<div class="line"><a id="l02742" name="l02742"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#ab3d9b055ef46f4b1b29680e01f91ddaa"> 2742</a></span><span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651">mark</a>(Args <span class="keyword">const</span>&amp;... args) <span class="keyword">noexcept</span></div>
<div class="line"><a id="l02743" name="l02743"></a><span class="lineno"> 2743</span>{</div>
<div class="line"><a id="l02744" name="l02744"></a><span class="lineno"> 2744</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="line"><a id="l02745" name="l02745"></a><span class="lineno"> 2745</span>  mark_in&lt;domain::global&gt;(args...);</div>
<div class="line"><a id="l02746" name="l02746"></a><span class="lineno"> 2746</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02747" name="l02747"></a><span class="lineno"> 2747</span>}</div>
</div>
<div class="line"><a id="l02748" name="l02748"></a><span class="lineno"> 2748</span> </div>
<div class="line"><a id="l02749" name="l02749"></a><span class="lineno"> 2749</span>}  <span class="comment">// namespace NVTX3_VERSION_NAMESPACE</span></div>
<div class="line"><a id="l02750" name="l02750"></a><span class="lineno"> 2750</span> </div>
<div class="line"><a id="l02751" name="l02751"></a><span class="lineno"> 2751</span>}  <span class="comment">// namespace nvtx3</span></div>
<div class="line"><a id="l02752" name="l02752"></a><span class="lineno"> 2752</span> </div>
<div class="line"><a id="l02753" name="l02753"></a><span class="lineno"> 2753</span><span class="preprocessor">#ifndef NVTX_DISABLE</span></div>
<div class="foldopen" id="foldopen02782" data-start="" data-end="">
<div class="line"><a id="l02782" name="l02782"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a58b4c0fa6be7f4754f8e73bcbf6fd1af"> 2782</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IN(D)                                                  \</span></div>
<div class="line"><a id="l02783" name="l02783"></a><span class="lineno"> 2783</span><span class="preprocessor">  static ::nvtx3::v1::registered_string_in&lt;D&gt; const nvtx3_func_name__{__func__};   \</span></div>
<div class="line"><a id="l02784" name="l02784"></a><span class="lineno"> 2784</span><span class="preprocessor">  static ::nvtx3::v1::event_attributes const nvtx3_func_attr__{nvtx3_func_name__}; \</span></div>
<div class="line"><a id="l02785" name="l02785"></a><span class="lineno"> 2785</span><span class="preprocessor">  ::nvtx3::v1::scoped_range_in&lt;D&gt; const nvtx3_range__{nvtx3_func_attr__};</span></div>
</div>
<div class="line"><a id="l02786" name="l02786"></a><span class="lineno"> 2786</span> </div>
<div class="foldopen" id="foldopen02803" data-start="" data-end="">
<div class="line"><a id="l02803" name="l02803"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#af6fecf49b25b2364e548f9786136fb95"> 2803</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IF_IN(D, C) \</span></div>
<div class="line"><a id="l02804" name="l02804"></a><span class="lineno"> 2804</span><span class="preprocessor">  ::nvtx3::v1::detail::optional_scoped_range_in&lt;D&gt; optional_nvtx3_range__;           \</span></div>
<div class="line"><a id="l02805" name="l02805"></a><span class="lineno"> 2805</span><span class="preprocessor">  if (C) {                                                                           \</span></div>
<div class="line"><a id="l02806" name="l02806"></a><span class="lineno"> 2806</span><span class="preprocessor">    static ::nvtx3::v1::registered_string_in&lt;D&gt; const nvtx3_func_name__{__func__};   \</span></div>
<div class="line"><a id="l02807" name="l02807"></a><span class="lineno"> 2807</span><span class="preprocessor">    static ::nvtx3::v1::event_attributes const nvtx3_func_attr__{nvtx3_func_name__}; \</span></div>
<div class="line"><a id="l02808" name="l02808"></a><span class="lineno"> 2808</span><span class="preprocessor">    optional_nvtx3_range__.begin(nvtx3_func_attr__);                                 \</span></div>
<div class="line"><a id="l02809" name="l02809"></a><span class="lineno"> 2809</span><span class="preprocessor">  }</span></div>
</div>
<div class="line"><a id="l02810" name="l02810"></a><span class="lineno"> 2810</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02811" name="l02811"></a><span class="lineno"> 2811</span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IN(D)</span></div>
<div class="line"><a id="l02812" name="l02812"></a><span class="lineno"> 2812</span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IF_IN(D, C)</span></div>
<div class="line"><a id="l02813" name="l02813"></a><span class="lineno"> 2813</span><span class="preprocessor">#endif  </span><span class="comment">// NVTX_DISABLE</span></div>
<div class="line"><a id="l02814" name="l02814"></a><span class="lineno"> 2814</span> </div>
<div class="line"><a id="l02837" name="l02837"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a9f0dbc21588c8d0f6ee728fdf5289490"> 2837</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE() NVTX3_V1_FUNC_RANGE_IN(::nvtx3::v1::domain::global)</span></div>
<div class="line"><a id="l02838" name="l02838"></a><span class="lineno"> 2838</span> </div>
<div class="line"><a id="l02850" name="l02850"></a><span class="lineno"><a class="line" href="nvtx3_8hpp.html#a7f4e78b0ede77382c2c09fa007c5963e"> 2850</a></span><span class="preprocessor">#define NVTX3_V1_FUNC_RANGE_IF(C) NVTX3_V1_FUNC_RANGE_IF_IN(::nvtx3::v1::domain::global, C)</span></div>
<div class="line"><a id="l02851" name="l02851"></a><span class="lineno"> 2851</span> </div>
<div class="line"><a id="l02852" name="l02852"></a><span class="lineno"> 2852</span><span class="comment">/* When inlining this version, versioned macros must have unversioned aliases.</span></div>
<div class="line"><a id="l02853" name="l02853"></a><span class="lineno"> 2853</span><span class="comment"> * For each NVTX3_Vx_ #define, make an NVTX3_ alias of it here.*/</span></div>
<div class="line"><a id="l02854" name="l02854"></a><span class="lineno"> 2854</span><span class="preprocessor">#if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l02855" name="l02855"></a><span class="lineno"> 2855</span><span class="comment">/* clang format off */</span></div>
<div class="line"><a id="l02856" name="l02856"></a><span class="lineno"> 2856</span><span class="preprocessor">#define NVTX3_FUNC_RANGE       NVTX3_V1_FUNC_RANGE</span></div>
<div class="line"><a id="l02857" name="l02857"></a><span class="lineno"> 2857</span><span class="preprocessor">#define NVTX3_FUNC_RANGE_IF    NVTX3_V1_FUNC_RANGE_IF</span></div>
<div class="line"><a id="l02858" name="l02858"></a><span class="lineno"> 2858</span><span class="preprocessor">#define NVTX3_FUNC_RANGE_IN    NVTX3_V1_FUNC_RANGE_IN</span></div>
<div class="line"><a id="l02859" name="l02859"></a><span class="lineno"> 2859</span><span class="preprocessor">#define NVTX3_FUNC_RANGE_IF_IN NVTX3_V1_FUNC_RANGE_IF_IN</span></div>
<div class="line"><a id="l02860" name="l02860"></a><span class="lineno"> 2860</span><span class="comment">/* clang format on */</span></div>
<div class="line"><a id="l02861" name="l02861"></a><span class="lineno"> 2861</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02862" name="l02862"></a><span class="lineno"> 2862</span> </div>
<div class="line"><a id="l02863" name="l02863"></a><span class="lineno"> 2863</span><span class="preprocessor">#endif  </span><span class="comment">// NVTX3_CPP_DEFINITIONS_V1_0</span></div>
<div class="line"><a id="l02864" name="l02864"></a><span class="lineno"> 2864</span> </div>
<div class="line"><a id="l02865" name="l02865"></a><span class="lineno"> 2865</span><span class="comment">/* Add functionality for new minor versions here, by copying the above section enclosed</span></div>
<div class="line"><a id="l02866" name="l02866"></a><span class="lineno"> 2866</span><span class="comment"> * in #ifndef NVTX3_CPP_DEFINITIONS_Vx_y, and incrementing the minor version.  This code</span></div>
<div class="line"><a id="l02867" name="l02867"></a><span class="lineno"> 2867</span><span class="comment"> * is an example of how additions for version 1.2 would look, indented for clarity.  Note</span></div>
<div class="line"><a id="l02868" name="l02868"></a><span class="lineno"> 2868</span><span class="comment"> * that the versioned symbols and macros are always provided, and the unversioned symbols</span></div>
<div class="line"><a id="l02869" name="l02869"></a><span class="lineno"> 2869</span><span class="comment"> * are only provided if NVTX3_INLINE_THIS_VERSION was defined at the top of this header.</span></div>
<div class="line"><a id="l02870" name="l02870"></a><span class="lineno"> 2870</span><span class="comment"> *</span></div>
<div class="line"><a id="l02871" name="l02871"></a><span class="lineno"> 2871</span><span class="comment"> * \code{.cpp}</span></div>
<div class="line"><a id="l02872" name="l02872"></a><span class="lineno"> 2872</span><span class="comment"> * #ifndef NVTX3_CPP_DEFINITIONS_V1_2</span></div>
<div class="line"><a id="l02873" name="l02873"></a><span class="lineno"> 2873</span><span class="comment"> * #define NVTX3_CPP_DEFINITIONS_V1_2</span></div>
<div class="line"><a id="l02874" name="l02874"></a><span class="lineno"> 2874</span><span class="comment"> *     namespace nvtx3 {</span></div>
<div class="line"><a id="l02875" name="l02875"></a><span class="lineno"> 2875</span><span class="comment"> *         NVTX3_INLINE_IF_REQUESTED namespace NVTX3_VERSION_NAMESPACE {</span></div>
<div class="line"><a id="l02876" name="l02876"></a><span class="lineno"> 2876</span><span class="comment"> *             class new_class {};</span></div>
<div class="line"><a id="l02877" name="l02877"></a><span class="lineno"> 2877</span><span class="comment"> *             inline void new_function() {}</span></div>
<div class="line"><a id="l02878" name="l02878"></a><span class="lineno"> 2878</span><span class="comment"> *         }</span></div>
<div class="line"><a id="l02879" name="l02879"></a><span class="lineno"> 2879</span><span class="comment"> *     }</span></div>
<div class="line"><a id="l02880" name="l02880"></a><span class="lineno"> 2880</span><span class="comment"> *</span></div>
<div class="line"><a id="l02881" name="l02881"></a><span class="lineno"> 2881</span><span class="comment"> *     // Macros must have the major version in their names:</span></div>
<div class="line"><a id="l02882" name="l02882"></a><span class="lineno"> 2882</span><span class="comment"> *     #define NVTX3_V1_NEW_MACRO_A() ...</span></div>
<div class="line"><a id="l02883" name="l02883"></a><span class="lineno"> 2883</span><span class="comment"> *     #define NVTX3_V1_NEW_MACRO_B() ...</span></div>
<div class="line"><a id="l02884" name="l02884"></a><span class="lineno"> 2884</span><span class="comment"> *</span></div>
<div class="line"><a id="l02885" name="l02885"></a><span class="lineno"> 2885</span><span class="comment"> *     // If inlining, make aliases for the macros with the version number omitted</span></div>
<div class="line"><a id="l02886" name="l02886"></a><span class="lineno"> 2886</span><span class="comment"> *     #if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l02887" name="l02887"></a><span class="lineno"> 2887</span><span class="comment"> *         #define NVTX3_NEW_MACRO_A NVTX3_V1_NEW_MACRO_A</span></div>
<div class="line"><a id="l02888" name="l02888"></a><span class="lineno"> 2888</span><span class="comment"> *         #define NVTX3_NEW_MACRO_B NVTX3_V1_NEW_MACRO_B</span></div>
<div class="line"><a id="l02889" name="l02889"></a><span class="lineno"> 2889</span><span class="comment"> *     #endif</span></div>
<div class="line"><a id="l02890" name="l02890"></a><span class="lineno"> 2890</span><span class="comment"> * #endif // NVTX3_CPP_DEFINITIONS_V1_2</span></div>
<div class="line"><a id="l02891" name="l02891"></a><span class="lineno"> 2891</span><span class="comment"> * \endcode</span></div>
<div class="line"><a id="l02892" name="l02892"></a><span class="lineno"> 2892</span><span class="comment"> */</span></div>
<div class="line"><a id="l02893" name="l02893"></a><span class="lineno"> 2893</span> </div>
<div class="line"><a id="l02894" name="l02894"></a><span class="lineno"> 2894</span><span class="comment">/* Undefine all temporarily-defined unversioned macros, which would conflict with</span></div>
<div class="line"><a id="l02895" name="l02895"></a><span class="lineno"> 2895</span><span class="comment"> * subsequent includes of different versions of this header. */</span></div>
<div class="line"><a id="l02896" name="l02896"></a><span class="lineno"> 2896</span><span class="preprocessor">#undef NVTX3_CPP_VERSION_MAJOR</span></div>
<div class="line"><a id="l02897" name="l02897"></a><span class="lineno"> 2897</span><span class="preprocessor">#undef NVTX3_CPP_VERSION_MINOR</span></div>
<div class="line"><a id="l02898" name="l02898"></a><span class="lineno"> 2898</span><span class="preprocessor">#undef NVTX3_CONCAT</span></div>
<div class="line"><a id="l02899" name="l02899"></a><span class="lineno"> 2899</span><span class="preprocessor">#undef NVTX3_NAMESPACE_FOR</span></div>
<div class="line"><a id="l02900" name="l02900"></a><span class="lineno"> 2900</span><span class="preprocessor">#undef NVTX3_VERSION_NAMESPACE</span></div>
<div class="line"><a id="l02901" name="l02901"></a><span class="lineno"> 2901</span><span class="preprocessor">#undef NVTX3_INLINE_IF_REQUESTED</span></div>
<div class="line"><a id="l02902" name="l02902"></a><span class="lineno"> 2902</span><span class="preprocessor">#undef NVTX3_CONSTEXPR_IF_CPP14</span></div>
<div class="line"><a id="l02903" name="l02903"></a><span class="lineno"> 2903</span><span class="preprocessor">#undef NVTX3_MAYBE_UNUSED</span></div>
<div class="line"><a id="l02904" name="l02904"></a><span class="lineno"> 2904</span><span class="preprocessor">#undef NVTX3_NO_DISCARD</span></div>
<div class="line"><a id="l02905" name="l02905"></a><span class="lineno"> 2905</span> </div>
<div class="line"><a id="l02906" name="l02906"></a><span class="lineno"> 2906</span><span class="preprocessor">#if defined(NVTX3_INLINE_THIS_VERSION)</span></div>
<div class="line"><a id="l02907" name="l02907"></a><span class="lineno"> 2907</span><span class="preprocessor">#undef NVTX3_INLINE_THIS_VERSION</span></div>
<div class="line"><a id="l02908" name="l02908"></a><span class="lineno"> 2908</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02909" name="l02909"></a><span class="lineno"> 2909</span> </div>
<div class="line"><a id="l02910" name="l02910"></a><span class="lineno"> 2910</span><span class="preprocessor">#if defined(NVTX3_USE_CHECKED_OVERLOADS_FOR_GET_DEFINED_HERE)</span></div>
<div class="line"><a id="l02911" name="l02911"></a><span class="lineno"> 2911</span><span class="preprocessor">#undef NVTX3_USE_CHECKED_OVERLOADS_FOR_GET_DEFINED_HERE</span></div>
<div class="line"><a id="l02912" name="l02912"></a><span class="lineno"> 2912</span><span class="preprocessor">#undef NVTX3_USE_CHECKED_OVERLOADS_FOR_GET</span></div>
<div class="line"><a id="l02913" name="l02913"></a><span class="lineno"> 2913</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02914" name="l02914"></a><span class="lineno"> 2914</span> </div>
<div class="line"><a id="l02915" name="l02915"></a><span class="lineno"> 2915</span><span class="preprocessor">#if defined(NVTX3_STATIC_ASSERT_DEFINED_HERE)</span></div>
<div class="line"><a id="l02916" name="l02916"></a><span class="lineno"> 2916</span><span class="preprocessor">#undef NVTX3_STATIC_ASSERT_DEFINED_HERE</span></div>
<div class="line"><a id="l02917" name="l02917"></a><span class="lineno"> 2917</span><span class="preprocessor">#undef NVTX3_STATIC_ASSERT</span></div>
<div class="line"><a id="l02918" name="l02918"></a><span class="lineno"> 2918</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html">nvtx3::category</a></div><div class="ttdoc">Object for intra-domain grouping of NVTX events.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01153">nvtx3.hpp:1153</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html_a16b26c66ef40850b7bf79fb8e8b9ccec"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html#a16b26c66ef40850b7bf79fb8e8b9ccec">nvtx3::v1::category::category</a></div><div class="ttdeci">constexpr category(id_type id) noexcept</div><div class="ttdoc">Construct a category with the specified id.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01167">nvtx3.hpp:1167</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html_a5d59d395dff9e74ec8bd6154581fc345"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html#a5d59d395dff9e74ec8bd6154581fc345">nvtx3::v1::category::get_id</a></div><div class="ttdeci">constexpr id_type get_id() const noexcept</div><div class="ttdoc">Returns the id of the category.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01173">nvtx3.hpp:1173</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1category_html_a93b9c6f1e074a03ee50287c9c6414bc0"><div class="ttname"><a href="classnvtx3_1_1v1_1_1category.html#a93b9c6f1e074a03ee50287c9c6414bc0">nvtx3::v1::category::id_type</a></div><div class="ttdeci">uint32_t id_type</div><div class="ttdoc">Type used for categorys integer id.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01156">nvtx3.hpp:1156</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html">nvtx3::color</a></div><div class="ttdoc">Represents a custom color that can be associated with an NVTX event via its event_attributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01046">nvtx3.hpp:1046</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a44f694cefa3afee1d9dfbf2fde3a06f4"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a44f694cefa3afee1d9dfbf2fde3a06f4">nvtx3::v1::color::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Returns the colors argb hex code.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01098">nvtx3.hpp:1098</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a47084ed086b5071cd7b070b0a4611e24"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a47084ed086b5071cd7b070b0a4611e24">nvtx3::v1::color::color</a></div><div class="ttdeci">constexpr color(rgb rgb_) noexcept</div><div class="ttdoc">Construct a color using the red, green, blue components in rgb.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01089">nvtx3.hpp:1089</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a6327e421cdd233398693a2804aea942f"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a6327e421cdd233398693a2804aea942f">nvtx3::v1::color::value_type</a></div><div class="ttdeci">uint32_t value_type</div><div class="ttdoc">Type used for the color's value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01049">nvtx3.hpp:1049</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_a671a9e63379a2896f5c689fb0a37f0a9"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#a671a9e63379a2896f5c689fb0a37f0a9">nvtx3::v1::color::color</a></div><div class="ttdeci">constexpr color(value_type hex_code) noexcept</div><div class="ttdoc">Constructs a color using the value provided by hex_code.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01068">nvtx3.hpp:1068</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_abd11ca09f1b3a66041cea45d4141dc37"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#abd11ca09f1b3a66041cea45d4141dc37">nvtx3::v1::color::color</a></div><div class="ttdeci">constexpr color(argb argb_) noexcept</div><div class="ttdoc">Construct a color using the alpha, red, green, blue components in argb.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01076">nvtx3.hpp:1076</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1color_html_af550398d7d76d9452576860a4363d75c"><div class="ttname"><a href="classnvtx3_1_1v1_1_1color.html#af550398d7d76d9452576860a4363d75c">nvtx3::v1::color::get_type</a></div><div class="ttdeci">constexpr nvtxColorType_t get_type() const noexcept</div><div class="ttdoc">Return the NVTX color type of the color.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01104">nvtx3.hpp:1104</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1domain_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1domain.html">nvtx3::domain</a></div><div class="ttdoc">domains allow for grouping NVTX events into a single scope to differentiate them from events in other...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00756">nvtx3.hpp:756</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1domain_html_a0d83a594238449a3da85e337409fc3db"><div class="ttname"><a href="classnvtx3_1_1v1_1_1domain.html#a0d83a594238449a3da85e337409fc3db">nvtx3::v1::domain::get</a></div><div class="ttdeci">static domain const &amp; get() noexcept</div><div class="ttdoc">Returns reference to an instance of a function local static domain object.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00826">nvtx3.hpp:826</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html">nvtx3::event_attributes</a></div><div class="ttdoc">Describes the attributes of a NVTX event.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01941">nvtx3.hpp:1941</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_a14e581407cea05235f0f814f4043c656"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#a14e581407cea05235f0f814f4043c656">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(color const &amp;c, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a color.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01987">nvtx3.hpp:1987</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_a27ef8784b11bb620cd597ea55a781e02"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#a27ef8784b11bb620cd597ea55a781e02">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(category const &amp;c, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a category.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01973">nvtx3.hpp:1973</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_aa060dd3c07034ccef18c2b48ec99f90c"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#aa060dd3c07034ccef18c2b48ec99f90c">nvtx3::v1::event_attributes::get</a></div><div class="ttdeci">constexpr value_type const * get() const noexcept</div><div class="ttdoc">Get raw pointer to underlying NVTX attributes object.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02034">nvtx3.hpp:2034</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_ac16fc2b8249f503ff89ee14a9fdb63fd"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#ac16fc2b8249f503ff89ee14a9fdb63fd">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(payload const &amp;p, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a payload.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02002">nvtx3.hpp:2002</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_acccdd768a4fbe2234d151e8a8443f44f"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#acccdd768a4fbe2234d151e8a8443f44f">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">event_attributes(message const &amp;m, Args const &amp;... args) noexcept</div><div class="ttdoc">Variadic constructor where the first argument is a message.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02017">nvtx3.hpp:2017</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1event__attributes_html_af9b06fcd1d0bb4b8739009b3b00ef34d"><div class="ttname"><a href="classnvtx3_1_1v1_1_1event__attributes.html#af9b06fcd1d0bb4b8739009b3b00ef34d">nvtx3::v1::event_attributes::event_attributes</a></div><div class="ttdeci">constexpr event_attributes() noexcept</div><div class="ttdoc">Default constructor creates an event_attributes with no category, color, payload, nor message.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01949">nvtx3.hpp:1949</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html">nvtx3::message</a></div><div class="ttdoc">Allows associating a message string with an NVTX event via its EventAttributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01651">nvtx3.hpp:1651</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a0864f7bb6f147a8e45241883fc53d2bf"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a0864f7bb6f147a8e45241883fc53d2bf">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::string const &amp;msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01670">nvtx3.hpp:1670</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a15e5e0153c1ccb5db9db7ed35ed61481"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a15e5e0153c1ccb5db9db7ed35ed61481">nvtx3::v1::message::message</a></div><div class="ttdeci">message(wchar_t const *msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01687">nvtx3.hpp:1687</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a17d2eaf8f1c653ddf6237425833f3cfc"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a17d2eaf8f1c653ddf6237425833f3cfc">nvtx3::v1::message::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Return the union holding the value of the message.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01752">nvtx3.hpp:1752</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a2827347a64c6c91518f5191eade74054"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a2827347a64c6c91518f5191eade74054">nvtx3::v1::message::message</a></div><div class="ttdeci">message(registered_string_in&lt; D &gt; const &amp;msg) noexcept</div><div class="ttdoc">Construct a message from a registered_string_in.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01718">nvtx3.hpp:1718</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a3a8b73acb3c9cd2a5d78fe94efb0a9db"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a3a8b73acb3c9cd2a5d78fe94efb0a9db">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::wstring &amp;&amp;)=delete</div><div class="ttdoc">Disallow construction for std::wstring r-value.</div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_a856a7186fd697a92b2a6699a448ffc45"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#a856a7186fd697a92b2a6699a448ffc45">nvtx3::v1::message::get_type</a></div><div class="ttdeci">constexpr nvtxMessageType_t get_type() const noexcept</div><div class="ttdoc">Return the type information about the value the union holds.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01758">nvtx3.hpp:1758</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_ab0e7eae70ce91c6f8aa9be048fc146bd"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#ab0e7eae70ce91c6f8aa9be048fc146bd">nvtx3::v1::message::message</a></div><div class="ttdeci">message(nvtxStringHandle_t handle) noexcept</div><div class="ttdoc">Construct a message from NVTX C API registered string handle.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01742">nvtx3.hpp:1742</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_abdbef47b3202d55a8b956da6b1296448"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#abdbef47b3202d55a8b956da6b1296448">nvtx3::v1::message::message</a></div><div class="ttdeci">message(char const *msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01660">nvtx3.hpp:1660</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_ad16d6a6518feb8f438faf0dbe052a4ee"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#ad16d6a6518feb8f438faf0dbe052a4ee">nvtx3::v1::message::message</a></div><div class="ttdeci">constexpr message(nvtxMessageType_t const &amp;type, nvtxMessageValue_t const &amp;value) noexcept</div><div class="ttdoc">Construct a message from NVTX C API type and value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01730">nvtx3.hpp:1730</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_ad5fcc11a05dfb819fcf3238ae90131a0"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#ad5fcc11a05dfb819fcf3238ae90131a0">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::string &amp;&amp;)=delete</div><div class="ttdoc">Disallow construction for std::string r-value.</div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1message_html_af152cd392b2bd13dd1fd00fbf2d29c09"><div class="ttname"><a href="classnvtx3_1_1v1_1_1message.html#af152cd392b2bd13dd1fd00fbf2d29c09">nvtx3::v1::message::message</a></div><div class="ttdeci">message(std::wstring const &amp;msg) noexcept</div><div class="ttdoc">Construct a message whose contents are specified by msg.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01697">nvtx3.hpp:1697</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html">nvtx3::named_category_in</a></div><div class="ttdoc">A category with an associated name string.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01236">nvtx3.hpp:1236</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html_a0b8ac1f00f1c0686858a20884c8eb19a"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html#a0b8ac1f00f1c0686858a20884c8eb19a">nvtx3::v1::named_category_in::named_category_in</a></div><div class="ttdeci">named_category_in(id_type id, wchar_t const *name) noexcept</div><div class="ttdoc">Construct a named_category_in with the specified id and name.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01372">nvtx3.hpp:1372</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html_a3bc82f4cd71482347796787bc4436e30"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html#a3bc82f4cd71482347796787bc4436e30">nvtx3::v1::named_category_in::get</a></div><div class="ttdeci">static named_category_in const &amp; get() noexcept</div><div class="ttdoc">Returns a global instance of a named_category_in as a function-local static.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01278">nvtx3.hpp:1278</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1named__category__in_html_a7fe4261f6a0b9d1cfb6e566d8ff2135f"><div class="ttname"><a href="classnvtx3_1_1v1_1_1named__category__in.html#a7fe4261f6a0b9d1cfb6e566d8ff2135f">nvtx3::v1::named_category_in::named_category_in</a></div><div class="ttdeci">named_category_in(id_type id, char const *name) noexcept</div><div class="ttdoc">Construct a named_category_in with the specified id and name.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01352">nvtx3.hpp:1352</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html">nvtx3::payload</a></div><div class="ttdoc">A numerical value that can be associated with an NVTX event via its event_attributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01781">nvtx3.hpp:1781</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a0351f31362bee4c7222bfa830dc46adf"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a0351f31362bee4c7222bfa830dc46adf">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(int32_t value) noexcept</div><div class="ttdoc">Construct a payload from a signed, 4 byte integer.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01801">nvtx3.hpp:1801</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a2c3609dc8a8e6ce0ddfda5e96113ea53"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a2c3609dc8a8e6ce0ddfda5e96113ea53">nvtx3::v1::payload::payload</a></div><div class="ttdeci">constexpr payload(nvtxPayloadType_t const &amp;type, value_type const &amp;value) noexcept</div><div class="ttdoc">Construct a payload from NVTX C API type and value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01859">nvtx3.hpp:1859</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a3755fd622f2552519d77f83d2f41950d"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a3755fd622f2552519d77f83d2f41950d">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(uint32_t value) noexcept</div><div class="ttdoc">Construct a payload from an unsigned, 4 byte integer.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01823">nvtx3.hpp:1823</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a4eb0c1e4256db34fa68779a67d26e4ef"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a4eb0c1e4256db34fa68779a67d26e4ef">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(int64_t value) noexcept</div><div class="ttdoc">Construct a payload from a signed, 8 byte integer.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01790">nvtx3.hpp:1790</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_a69cc4703669a5c973fcac94b998b1677"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#a69cc4703669a5c973fcac94b998b1677">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(float value) noexcept</div><div class="ttdoc">Construct a payload from a single-precision floating point value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01835">nvtx3.hpp:1835</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_ab2f4ae9a528d1ba77a99aa6a334123ed"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#ab2f4ae9a528d1ba77a99aa6a334123ed">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(double value) noexcept</div><div class="ttdoc">Construct a payload from a double-precision floating point value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01847">nvtx3.hpp:1847</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_abb1094dc4fa3abc332ed18133fb2164e"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#abb1094dc4fa3abc332ed18133fb2164e">nvtx3::v1::payload::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Return the union holding the value of the payload.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01870">nvtx3.hpp:1870</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_aeb3c21614c98acab62d0007175093172"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#aeb3c21614c98acab62d0007175093172">nvtx3::v1::payload::get_type</a></div><div class="ttdeci">constexpr nvtxPayloadType_t get_type() const noexcept</div><div class="ttdoc">Return the information about the type the union holds.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01876">nvtx3.hpp:1876</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1payload_html_afae6410eb17c40079fec46cfa6472ca8"><div class="ttname"><a href="classnvtx3_1_1v1_1_1payload.html#afae6410eb17c40079fec46cfa6472ca8">nvtx3::v1::payload::payload</a></div><div class="ttdeci">payload(uint64_t value) noexcept</div><div class="ttdoc">Construct a payload from an unsigned, 8 byte integer.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01812">nvtx3.hpp:1812</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html">nvtx3::registered_string_in</a></div><div class="ttdoc">A message registered with NVTX.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01436">nvtx3.hpp:1436</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a059adcf011e73293c1d76a512d316524"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a059adcf011e73293c1d76a512d316524">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(char const *msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01538">nvtx3.hpp:1538</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a13d5f54f46e91073677fcfbe094dd261"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a13d5f54f46e91073677fcfbe094dd261">nvtx3::v1::registered_string_in::get_handle</a></div><div class="ttdeci">nvtxStringHandle_t get_handle() const noexcept</div><div class="ttdoc">Returns the registered string's handle.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01591">nvtx3.hpp:1591</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a7e8f0b775f6363e2187f50648c5a44f5"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a7e8f0b775f6363e2187f50648c5a44f5">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(std::string const &amp;msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01554">nvtx3.hpp:1554</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_a90f6112510f0745a373a7fdb162b85de"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#a90f6112510f0745a373a7fdb162b85de">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(std::wstring const &amp;msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01584">nvtx3.hpp:1584</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_ab9d2c81308244bec4198167e2c8d3d4c"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#ab9d2c81308244bec4198167e2c8d3d4c">nvtx3::v1::registered_string_in::registered_string_in</a></div><div class="ttdeci">registered_string_in(wchar_t const *msg) noexcept</div><div class="ttdoc">Constructs a registered_string_in from the specified msg string.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01568">nvtx3.hpp:1568</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1registered__string__in_html_abf90f8765081cee5f99d971271e29567"><div class="ttname"><a href="classnvtx3_1_1v1_1_1registered__string__in.html#abf90f8765081cee5f99d971271e29567">nvtx3::v1::registered_string_in::get</a></div><div class="ttdeci">static registered_string_in const &amp; get() noexcept</div><div class="ttdoc">Returns a global instance of a registered_string_in as a function local static.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01476">nvtx3.hpp:1476</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html">nvtx3::scoped_range_in</a></div><div class="ttdoc">A RAII object for creating a NVTX range local to a thread within a domain.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02088">nvtx3.hpp:2088</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_a25eff24202b7021ced3481b29c1768c8"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#a25eff24202b7021ced3481b29c1768c8">nvtx3::v1::scoped_range_in::scoped_range_in</a></div><div class="ttdeci">scoped_range_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Construct a scoped_range_in with the specified event_attributes</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02104">nvtx3.hpp:2104</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_a53b3c3d95b29dfc31db2df290804df65"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#a53b3c3d95b29dfc31db2df290804df65">nvtx3::v1::scoped_range_in::scoped_range_in</a></div><div class="ttdeci">scoped_range_in(Args const &amp;... args) noexcept</div><div class="ttdoc">Constructs a scoped_range_in from the constructor arguments of an event_attributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02134">nvtx3.hpp:2134</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_a72417f5a5f0ecf2b67551880bdd28955"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#a72417f5a5f0ecf2b67551880bdd28955">nvtx3::v1::scoped_range_in::scoped_range_in</a></div><div class="ttdeci">scoped_range_in() noexcept</div><div class="ttdoc">Default constructor creates a scoped_range_in with no message, color, payload, nor category.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02144">nvtx3.hpp:2144</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1scoped__range__in_html_aebf31fd1548c4bf5196332db9ee90fb1"><div class="ttname"><a href="classnvtx3_1_1v1_1_1scoped__range__in.html#aebf31fd1548c4bf5196332db9ee90fb1">nvtx3::v1::scoped_range_in::~scoped_range_in</a></div><div class="ttdeci">~scoped_range_in() noexcept</div><div class="ttdoc">Destroy the scoped_range_in, ending the NVTX range event.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02162">nvtx3.hpp:2162</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html">nvtx3::unique_range_in</a></div><div class="ttdoc">A RAII object for creating a NVTX range within a domain that can be created and destroyed on differen...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02523">nvtx3.hpp:2523</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_a252eabd84e3eaf7ac788446048652c93"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#a252eabd84e3eaf7ac788446048652c93">nvtx3::v1::unique_range_in::unique_range_in</a></div><div class="ttdeci">constexpr unique_range_in() noexcept</div><div class="ttdoc">Default constructor creates a unique_range_in with no message, color, payload, nor category.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02573">nvtx3.hpp:2573</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_a931bde31ac0aeb60e8f3050a29c60f83"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#a931bde31ac0aeb60e8f3050a29c60f83">nvtx3::v1::unique_range_in::~unique_range_in</a></div><div class="ttdeci">~unique_range_in() noexcept=default</div><div class="ttdoc">Destroy the unique_range_in ending the range.</div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_aaf57515e4b226d0b114ab5fc54f51ee3"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#aaf57515e4b226d0b114ab5fc54f51ee3">nvtx3::v1::unique_range_in::unique_range_in</a></div><div class="ttdeci">unique_range_in(Args const &amp;... args) noexcept</div><div class="ttdoc">Constructs a unique_range_in from the constructor arguments of an event_attributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02563">nvtx3.hpp:2563</a></div></div>
<div class="ttc" id="aclassnvtx3_1_1v1_1_1unique__range__in_html_adcf350963f4c071aed55c6c7315847d1"><div class="ttname"><a href="classnvtx3_1_1v1_1_1unique__range__in.html#adcf350963f4c071aed55c6c7315847d1">nvtx3::v1::unique_range_in::unique_range_in</a></div><div class="ttdeci">unique_range_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Construct a new unique_range_in object with the specified event attributes.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02538">nvtx3.hpp:2538</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a0ef24a4252e5cc6267766410a03dcebb"><div class="ttname"><a href="nvtx3_8hpp.html#a0ef24a4252e5cc6267766410a03dcebb">nvtx3::v1::end_range_in</a></div><div class="ttdeci">void end_range_in(range_handle r) noexcept</div><div class="ttdoc">Manually end the range associated with the handle r in domain D.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02470">nvtx3.hpp:2470</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a19ff87d74e1ba3b674b6e0a542d7a228"><div class="ttname"><a href="nvtx3_8hpp.html#a19ff87d74e1ba3b674b6e0a542d7a228">nvtx3::v1::mark_in</a></div><div class="ttdeci">void mark_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Annotates an instantaneous point in time with a &quot;marker&quot;, using the attributes specified by attr.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02646">nvtx3.hpp:2646</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a58d393b13ffc2fe5f44b0171be0bec23"><div class="ttname"><a href="nvtx3_8hpp.html#a58d393b13ffc2fe5f44b0171be0bec23">nvtx3::v1::start_range_in</a></div><div class="ttdeci">range_handle start_range_in(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Manually begin an NVTX range.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02331">nvtx3.hpp:2331</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_a944d0beb92c70e5d3842c5dc4fca81ec"><div class="ttname"><a href="nvtx3_8hpp.html#a944d0beb92c70e5d3842c5dc4fca81ec">nvtx3::v1::start_range</a></div><div class="ttdeci">range_handle start_range(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Manually begin an NVTX range in the global domain.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02407">nvtx3.hpp:2407</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aa2016d0df543887a838402751356433d"><div class="ttname"><a href="nvtx3_8hpp.html#aa2016d0df543887a838402751356433d">nvtx3::v1::operator==</a></div><div class="ttdeci">constexpr bool operator==(range_handle lhs, range_handle rhs) noexcept</div><div class="ttdoc">Compares two range_handles for equality.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02288">nvtx3.hpp:2288</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aa9b21b20125928a45a37c12bf1992651"><div class="ttname"><a href="nvtx3_8hpp.html#aa9b21b20125928a45a37c12bf1992651">nvtx3::v1::mark</a></div><div class="ttdeci">void mark(event_attributes const &amp;attr) noexcept</div><div class="ttdoc">Annotates an instantaneous point in time with a &quot;marker&quot;, using the attributes specified by attr,...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02710">nvtx3.hpp:2710</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aaaae235fe6980a2ac95eb4f35d6e9ad1"><div class="ttname"><a href="nvtx3_8hpp.html#aaaae235fe6980a2ac95eb4f35d6e9ad1">nvtx3::v1::operator!=</a></div><div class="ttdeci">constexpr bool operator!=(range_handle lhs, range_handle rhs) noexcept</div><div class="ttdoc">Compares two range_handles for inequality.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02299">nvtx3.hpp:2299</a></div></div>
<div class="ttc" id="anvtx3_8hpp_html_aec1adbeb9e44752027d2ede89f1f0dba"><div class="ttname"><a href="nvtx3_8hpp.html#aec1adbeb9e44752027d2ede89f1f0dba">nvtx3::v1::end_range</a></div><div class="ttdeci">void end_range(range_handle r) noexcept</div><div class="ttdoc">Manually end the range associated with the handle r in the global domain.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02492">nvtx3.hpp:2492</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1argb_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1argb.html">nvtx3::argb</a></div><div class="ttdoc">Indicates the value of the alpha, red, green, and blue color channels for an ARGB color to use as an ...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01012">nvtx3.hpp:1012</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1argb_html_afe825f33bf3e68178c1df87d86ec9d93"><div class="ttname"><a href="structnvtx3_1_1v1_1_1argb.html#afe825f33bf3e68178c1df87d86ec9d93">nvtx3::v1::argb::argb</a></div><div class="ttdeci">constexpr argb(component_type alpha_, component_type red_, component_type green_, component_type blue_) noexcept</div><div class="ttdoc">Construct an argb with alpha, red, green, and blue channels specified by alpha_, red_,...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l01025">nvtx3.hpp:1025</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1domain_1_1global_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1domain_1_1global.html">nvtx3::v1::domain::global</a></div><div class="ttdoc">Tag type for the &quot;global&quot; NVTX domain.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00774">nvtx3.hpp:774</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html">nvtx3::range_handle</a></div><div class="ttdoc">Handle used for correlating explicit range start and end events.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02227">nvtx3.hpp:2227</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a268da1820c8b8c63210123f0eca23b4d"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a268da1820c8b8c63210123f0eca23b4d">nvtx3::v1::range_handle::range_handle</a></div><div class="ttdeci">constexpr range_handle(value_type id) noexcept</div><div class="ttdoc">Construct a range_handle from the given id.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02236">nvtx3.hpp:2236</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a3919493cff16228eed36c9a3c3f84de6"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a3919493cff16228eed36c9a3c3f84de6">nvtx3::v1::range_handle::get_value</a></div><div class="ttdeci">constexpr value_type get_value() const noexcept</div><div class="ttdoc">Returns the range_handle's value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02273">nvtx3.hpp:2273</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a5d0f33132aa6782d681656040dd6ce7f"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a5d0f33132aa6782d681656040dd6ce7f">nvtx3::v1::range_handle::range_handle</a></div><div class="ttdeci">constexpr range_handle() noexcept=default</div><div class="ttdoc">Constructs a null range handle.</div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_a77be25af5cf21fde96c18bf30727f109"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#a77be25af5cf21fde96c18bf30727f109">nvtx3::v1::range_handle::value_type</a></div><div class="ttdeci">nvtxRangeId_t value_type</div><div class="ttdoc">Type used for the handle's value.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02229">nvtx3.hpp:2229</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1range__handle_html_acaef1aa87e8c7ce936b0e93040b8ad3a"><div class="ttname"><a href="structnvtx3_1_1v1_1_1range__handle.html#acaef1aa87e8c7ce936b0e93040b8ad3a">nvtx3::v1::range_handle::range_handle</a></div><div class="ttdeci">constexpr range_handle(std::nullptr_t) noexcept</div><div class="ttdoc">Implicit conversion from nullptr constructs a null handle.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l02266">nvtx3.hpp:2266</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1rgb_html"><div class="ttname"><a href="structnvtx3_1_1v1_1_1rgb.html">nvtx3::rgb</a></div><div class="ttdoc">Indicates the values of the red, green, and blue color channels for an RGB color to use as an event a...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00980">nvtx3.hpp:980</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1rgb_html_a558a299dbc7c98f3d9b7cdd4a5e013e4"><div class="ttname"><a href="structnvtx3_1_1v1_1_1rgb.html#a558a299dbc7c98f3d9b7cdd4a5e013e4">nvtx3::v1::rgb::rgb</a></div><div class="ttdeci">constexpr rgb(component_type red_, component_type green_, component_type blue_) noexcept</div><div class="ttdoc">Construct a rgb with red, green, and blue channels specified by red_, green_, and blue_,...</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00994">nvtx3.hpp:994</a></div></div>
<div class="ttc" id="astructnvtx3_1_1v1_1_1rgb_html_afc2175c4660eb39a9d905528d02fe1b8"><div class="ttname"><a href="structnvtx3_1_1v1_1_1rgb.html#afc2175c4660eb39a9d905528d02fe1b8">nvtx3::v1::rgb::component_type</a></div><div class="ttdeci">uint8_t component_type</div><div class="ttdoc">Type used for component values.</div><div class="ttdef"><b>Definition</b> <a href="nvtx3_8hpp_source.html#l00982">nvtx3.hpp:982</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>
